/proc 파일시스템의 활용

서버/WAS/DBMS 2014. 12. 5. 14:01 Posted by TEAMCR@K

날씨가 갑작스럽게 추워진 12월입니다.

추위가 기승을 부리는데 보안관련 사건사고도 끊이지 않고 있네요.

오늘은 수 많은 보안관련 이슈 중 침해사고에 관련된 내용을 조금 전해드릴까 합니다.


보통 침해사고가 일어날 경우 루트킷이나 백도어가 설치되고 관리자가 이를 알아채지 못하도록 바이너리를 변조하는 행위를 하게 됩니다.

ps나 netstat과 같은 명령어들을 변조하면 프로세스 현황이나 네트워크 현황을 정상적으로 출력하지 못하겠죠.

이에 침해사고 분석 시에는 변조되지 않은 바이너리를 업로드하는 등의 형태로 진행하는 경우가 많습니다.


오늘은 /proc 파일시스템을 사용하여 간단하게 프로세스 정보와 네트워크 현황 정보를 볼 수 있는 방법을 알아볼까 합니다.

/proc 파일시스템을 분석하면 서버에 대한 많은 정보들을 알 수 있는데, 굳이 침해사고 분석 케이스만이 아니더라도 활용할 수 있는 부분이 많습니다.


* /proc 파일시스템을 활용한 네트워크 현황 체크하기

#!/bin/sh

#

# mini-netstat.sh

#

# Coded by TeamCR@K in A3Security

# TeamCR@K: 1ndr4, bash205, blarees, alrogia, fr33p13, kgyoun4, rhaps0dy, CrazyPure

#

FILES=("/proc/net/tcp" "/proc/net/tcp6")

for FILE in ${FILES[@]}; do

        echo "[*] ------------------- ${FILE}"

        echo

        echo -e "Local Address\tRemote Address"

        for LINE in $(cat ${FILE} | awk -F" " '{ print $2 "|" $3 }' | egrep -v address); do

                N=2

                IDX=0

                LINE_ARRAY=("")

                for ((P = 1; P < ${#LINE}; P+=2,N+=2,IDX++)) ; do

                        C=`echo "${LINE}" | cut -b ${P}-${P}`

                        if [ "${C}" == ":" ] || [ "${C}" == "|" ]; then

                                P=${P}-1; N=${N}-1;

                                continue

                        fi

                        LINE_ARRAY[${IDX}]=`echo "${LINE}" | cut -b ${P}-${N}`

                done

                # /proc/net/tcp

                if [ "${#LINE_ARRAY[@]}" == "12" ]; then

                        START=1

                        LOCAL_ADDR="$((16#${LINE_ARRAY[3]})).$((16#${LINE_ARRAY[2]})).$((16#${LINE_ARRAY[1]})).$((16#${LINE_ARRAY[0]}))"

                        LOCAL_PORT="$((16#${LINE_ARRAY[5]}${LINE_ARRAY[6]}))"

                        RMT_ADDR="$((16#${LINE_ARRAY[11]})).$((16#${LINE_ARRAY[10]})).$((16#${LINE_ARRAY[9]})).$((16#${LINE_ARRAY[8]}))"

                        RMT_PORT="$((16#${LINE_ARRAY[13]}${LINE_ARRAY[14]}))"

                        echo -e "${LOCAL_ADDR}:${LOCAL_PORT}\t${RMT_ADDR}:${RMT_PORT}"

                # /proc/net/tcp6

                elif [ "${#LINE_ARRAY[@]}" == "36" ]; then

                        LOCAL_ADDR="$((16#${LINE_ARRAY[15]})).$((16#${LINE_ARRAY[14]})).$((16#${LINE_ARRAY[13]})).$((16#${LINE_ARRAY[12]}))"

                        LOCAL_PORT="$((16#${LINE_ARRAY[17]}${LINE_ARRAY[18]}))"

                        RMT_ADDR="$((16#${LINE_ARRAY[35]})).$((16#${LINE_ARRAY[34]})).$((16#${LINE_ARRAY[33]})).$((16#${LINE_ARRAY[32]}))"

                        RMT_PORT="$((16#${LINE_ARRAY[37]}${LINE_ARRAY[38]}))"

                        echo -e "${LOCAL_ADDR}:${LOCAL_PORT}\t${RMT_ADDR}:${RMT_PORT}"

                else

                        echo "[!] Parse Error: ${LINE}"

                fi

        done

done


위 쉘 스크립트는 /proc/net/tcp, /proc/net/tcp6 파일의 내용을 파싱하여 현재 네트워크 현황을 알 수 있도록 제작된 스크립트입니다.

해당 쉘 스크립트를 실행하면 다음과 같이 netstat 명령의 결과와 비슷한 출력 결과를 보실 수 있습니다.


[그림 1] mini-netstat.sh 실행화면


/proc/net/tcp와 tcp6 파일은 Hex-Decimal 형태로 되어 있는데, 이를 변환하면 아이피와 포트정보를 알 수 있습니다.


[그림 2] 아이피와 포트정보가 Hex-Decimal 형태로 존재하는 /proc/net/tcp와 tcp6 파일


tcp와 tcp6의 내용을 변환하도록 하는 코드를 짜내느라 애 좀 먹었습니다. ^^;


* /proc 파일시스템을 활용한 프로세스 현황 체크하기

#!/bin/sh

# mini-proc.sh

#

# Coded by TeamCR@K in A3Security

# TeamCR@K: 1ndr4, bash205, blarees, alrogia, fr33p13, kgyoun4, rhaps0dy, CrazyPure

#

ROOT="/proc"

DELIM='|'


# Printable variables

REALPATH=""

CMDLINE=""

_USER=""

_UID=""


RESULT="<PID>${DELIM}<USER>${DELIM}<REALPATH>${DELIM}<CMDLINE>\n"


for PID in $(ls ${ROOT}); do

    DIR="$ROOT/$PID"

    if [ ! -d "$DIR" ]; then

        continue

    fi

    STATUS="$DIR/status"

    ############

    # 1. Get a valid process

    ###########

    if [ ! -f "${STATUS}" ]; then

        continue

    fi


    ############

    # 2. Get command line information of the process

    ###########

    CMDLINE=`cat /proc/${PID}/cmdline | sed -e 's/\x00/\x20/g'`

    if [ "$CMDLINE" == "" ]; then

        CMDLINE=`grep "Name:" ${STATUS} | awk '{ print $2 }'`

        if [ "$?" == "0" ]; then

                CMDLINE="[${CMDLINE}]"

        else

                CMDLINE="[Unknown]"

        fi

    fi


    ############

    # 3. Get real path of process binary

    ###########

    REALPATH=`readlink ${ROOT}/${PID}/exe`

    if [ "$?" == "1" ]; then

        REALPATH="[UNKNOWN]"

    fi


    ############

    # 4. Get UserID information of the process

    ###########

    _UID=`grep Uid /proc/${PID}/status | awk '{ print $2 }'`

    _USER=`getent passwd ${_UID} | cut -d: -f1`

    LINE="${PID}${DELIM}${_USER}${DELIM}${REALPATH}${DELIM}${CMDLINE}"

    RESULT="${RESULT}\n${LINE}"

done

echo -e $RESULT | column -t -s '|'


위 쉘 스크립트는 /proc/${PID}/status 파일과 /proc/${PID}/cmdline 파일을 기반으로 현재 실행되고 있는 프로세스 정보들을 출력하는 스크립트입니다.

해당 쉘 스크립트를 실행하면 다음과 같은 출력형태를 보실 수 있습니다.


[그림 3] mini-proc.sh 실행화면


간단하게 프로세스아이디 및 유저 정보, 프로세스 명을 출력하도록 되어 있습니다.

출력 결과 중 <REALPATH> 항목이 존재하는데 이는 프로세스의 실제 이미지 경로를 출력하도록 되어 있는 항목입니다.

본래 루트킷이나 백도어의 경우 프로세스 명을 숨기도록 작업한 사례들이 종종 있었습니다.

다음 화면은 프로세스 실행 중 ARGV[0] 메모리 영역을 다른 문자열로 Overwrite 하여 프로세스 명을 숨기도록 한 예입니다.


[그림 4] 프로세스 명을 숨기는 케이스


argv[0] 메모리 영역에 "[kjournald]"라는 문자열을 덮어씌워 일반적인 ps 명령으로 보면 정상적인 kernel thread로 오인할 수 있습니다.

<REALPATH> 항목은 위와 같은 경우를 위해 출력하도록 만든 항목입니다.

아래는 프로세스 명을 숨기도록 한 케이스에 mini-proc.sh 스크립트 실행을 적용해보았습니다. 


[그림 5] 프로세스 이미지의 실제 경로를 출력한 화면


kernel thread인 경우 프로세스 이미지의 FULL-PATH를 알 수 없어 "[UNKNOWN]"으로 표기됩니다.

그 외의 경우 일반 유저 권한으로 타 계정의 /proc 파일 시스템 파일의 열람권한이 없으므로 "[UNKNOWN]"으로 표기되는 경우가 있는데, 이는 root 권한으로 실행하여 해결 할 수 있습니다.


[그림 6] root 권한으로 실제 프로세스 이미지 경로를 얻어오기


/proc 파일시스템을 활용하면 위에 말씀드린 내용들보다 더 많은 정보들을 얻어올 수 있습니다.

/proc/$$/maps를 보면 현재 프로세스의 메모리 맵핑 정보를 볼 수 있고 /proc/cpuinfo나 /proc/meminfo를 참조하면 하드웨어 스펙을 알 수 있습니다.

또한 /proc/${PID}/fd 를 참조하면 해당 프로세스에서 open한 파일들을 알 수 있기 때문에 간이 lsof를 만드는 것도 가능할 듯 합니다.

linux를 조금 더 알고 싶으신 분들은 지금이라도 /proc 파일시스템에 관심을 가져보는 것은 어떨까요? ^^;


저희가 준비한 내용은 여기까지 입니다.

2014년 막바지에 날씨가 많이 추워졌으니 모두 몸 조심하시고 건강한 겨울 나시길 빌겠습니다.


읽어주셔서 감사합니다.


얼마전 포스팅 했던 CVE-2013-4011 AIX InfiniBand 취약점을 통해 본 고전해킹글을 보신 어떤 분께서 아래와 같은 질문을 하셨습니다.


"A3는 모의해킹 시, 내부 침투를 위해 어떤 방법을 사용합니까?"


해당 포스팅 글 중 캡쳐화면의 일부에서 192.x 로 시작하는 사설아이피 정보가 노출되어 궁금해지셨다고 합니다.

모의해킹을 하기 위한 방법은 팀마다 소유하고 있는 노하우가 다르고, 개개인 역시 사용하는 툴이나 방법도 다양합니다.

따라서 이것이 정답이다! 라고 하기 보다, 많은 방법들 중 포트포워딩을 통한 내부 침투의 케이스를 공유해볼까 합니다.


본 포스팅에서 설명 드리게 될 포트포워딩에 사용되는 툴은 lcx라는 툴로, 한때 웜 바이러스나 중국발 해킹 등에 사용된 포트포워딩 악성프로그램입니다.

악성프로그램이지만 동작구조가 응용하기 쉽게 되어 있는 프로그램이기 때문에 모의해킹에 사용되기도 합니다.


우선 다음 구조도를 참고하시면 lcx를 사용한 내부 침투가 어떻게 이루어지는지 간단하게 이해하실 수 있을 듯 합니다. 


[그림 1] lcx를 사용하여 포트포워딩으로 구성한 내부 침투 구조도


lcx의 경우 중국발 해킹에 사용되었기 때문에 소스코드는 유출이 되지 않은 것으로 알고 있습니다.

2007년경 침해사고 분석 시, Windows 서버에서 lcx를 접하고 이를 모의해킹에 응용하기 위해 구조를 분석하여 Clone 프로그램을 만드는 개인 프로젝트를 했었습니다.

현재 저희 팀 모의해킹에 사용되는 lcx Clone 프로그램은 해당 프로젝트의 산출물인 셈 입니다.

lcx Clone 프로그램은 Windows 용 lcx와 호환이 가능할 뿐 아니라 소스코드가 온전히 보존되어 있기 때문에 타 플랫폼에서 사용도 가능하며, lcx를 악성프로그램으로 탐지하는 백신의 경우 재 컴파일하여 우회할 수 있는 등의 특징이 있습니다.


Web Server가 Windows인 경우, SQL Injection 취약점으로 명령어를 실행할 수 있는 환경이거나 파일 업로드 취약점을 이용하여 웹쉘을 통해 명령어를 실행 할 수 있는 경우 lcx를 업로드 하고, 이를 통해 내부 네트워크에 있는 다른 서비스들을 접근할 수 있습니다.

다음 화면들은 위 [그림 1] lcx를 사용하여 포트포워딩으로 구성한 내부 침투 구조도 그림에서 보실 수 있는 구조와 같이 lcx를 이용해 Web Server의 터미널 서비스(3389 포트)에 접근하는 과정입니다.


[그림 2] lcx를 사용하여 loopback(127.0.0.1)의 터미널 서비스 포트(3389) 리다이렉트


[그림 3] 포트포워딩을 통해 방화벽 Inbound 룰셋을 우회하여 터미널 관리권한 획득


위 화면들을 통해 포트포워딩으로 Inbound 룰셋을 우회하고 내부의 다른 서비스포트로 접근이 가능한 것을 볼 수 있습니다.

slave 역할을 하는 서버에서 loopback이 아닌 다른 아이피 주소와 포트를 지정하면 다음과 같은 시나리오도 가능하다는 것을 알 수 있습니다.

[그림 4] 포트포워딩을 통해 물리적으로 별도 존재하는 DB 서버 접근


위와 같이 물리적으로 별도 서버로 존재하는 경우는 아니지만, 다음 화면들을 통해 MS-SQL 서비스 포트(1433)를 포워딩하여 GUI 환경의 데이타베이스 관리 및 점거가 가능함을 볼 수 있습니다.


[그림 5] MS-SQL 서버의 서비스 포트(1433) 리다이렉트 설정


[그림 6] 리다이렉트 된 포트를 사용하여 MS-SQL GUI 관리프로그램을 통한 로그인 성공


저희 TeamCR@K이 모의해킹 중 내부침투를 위해 어떤 방법을 사용하는지..에 대한 궁금증이 조금은 풀리셨는지 모르겠습니다.

이러한 방법이 탐지되고 막히면 저희는 또 다른 연구를 통해 우회방안을 만들어야겠지요.. ^^;

그러나 대한민국 IT보안을 위하는 것이라면 그러한 수고(?)쯤은 하나도 힘들지 않을 것 같습니다. ^^

보안이라는 것은 강조하고 또 강조해도 모자름이 없을테니까요..


읽어주셔서 감사합니다.

[스크랩] Nmap Cheat Sheet

서버/WAS/DBMS 2011. 1. 7. 10:42 Posted by TEAMCR@K
Nmap 옵션별 사용법이 아주 잘 정리된 블로그 문서입니다.

원문 URL : http://www.hacktoolrepository.com/article/13/Nmap%205%20%20cheat%20sheet%20and%20howto?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+HackToolUpdate+%28Hack+Tool+Update%29

Basic Scanning Techniques

Goal command example
Scan a Single Target nmap [target] nmap 192.168.1.1
Scan Multiple Targets nmap [target1, target2, etc] nmap 192.168.1.1, 192.168.1.2
Scan a List of Targets nmap -iL [list.txt] nmap -iL targets.txt
Scan a Range of Hosts nmap [range of ip addresses] nmap 192.168.1.1-10
Scan an Entire Subnet nmap [ip address/cdir] nmap 192.168.1.1/24
Scan Random Hosts nmap -iR [number] nmap -iR 0
Excluding Targets from a Scan nmap [targets] --exclude [targets] nmap 192.168.1.1/24 --exclude 192.168.1.0, 192.168.1.255
Excluding Targets Using a List nmap [targets] --excludefile [list.txt] nmap 192.168.1.1/24 --excludefile notargets.txt
Perform an Aggressive Scan nmap -A [target] nmap -A 192.168.1.1
Scan an IPv6 Target nmap -6 [target] nmap -6 3ffe:6a88:85a3:08d3:1319:8a2e:0370:7344

Discovery Options

Goal command example
Perform a Ping Only Scan nmap -sP [target] nmap -sP 192.168.1.1
Don’t Ping nmap -PN [target] nmap -PN 192.168.1.1
TCP SYN Ping nmap -PS [target] nmap -PS 192.168.1.1
TCP ACK Ping nmap -PA [target] nmap -PA 192.168.1.1
UDP Ping nmap -PU [target] nmap -PU 192.168.1.1
SCTP INIT Ping nmap -PY [target] nmap -PY 192.168.1.1
ICMP Echo Ping nmap -PE [target] nmap -PE 192.168.1.1
ICMP Timestamp Ping nmap -PP [target] nmap -PP 192.168.1.1
ICMP Address Mask Ping nmap -PM [target] nmap -PM 192.168.1.1
IP Protocol Ping nmap -PO [target] nmap -PO 192.168.1.1
ARP Ping nmap -PR [target] nmap -PR 192.168.1.1
Traceroute nmap --traceroute [target] nmap --traceroute 192.168.1.1
Force Reverse DNS Resolution nmap -R [target] nmap -R 192.168.1.1
Disable Reverse DNS Resolution nmap -n [target] nmap -n 192.168.1.1
Alternative DNS Lookup nmap --system-dns [target] nmap --system-dns 192.168.1.1
Manually Specify DNS Server(s) nmap --dns-servers [servers] [target] nmap --dns-servers 194.109.9.99 192.168.1.1
Create a Host List nmap -sL [targets] nmap -sL 192.168.1.1/24

Advanced Scanning Options

Goal command example
TCP SYN Scan nmap -sS [target] nmap -sS 192.168.1.1
TCP Connect Scan nmap -sT [target] nmap -sT 192.168.1.1
UDP Scan nmap -sU [target] nmap -sU 192.168.1.1
TCP NULL Scan nmap -sN [target] nmap -sN 192.168.1.1
TCP FIN Scan nmap -sF [target] nmap -sF 192.168.1.1
Xmas Scan nmap -sX [target] nmap -sX 192.168.1.1
TCP ACK Scan nmap -sA [target] nmap -sA 192.168.1.1
Custom TCP Scan nmap --scanflags [flags] [target] nmap --scanflags SYNFIN 192.168.1.1
IP Protocol Scan nmap -sO [target] nmap -sO 192.168.1.1
Send Raw Ethernet Packets nmap --send-eth [target] nmap --send-eth 192.168.1.1
Send IP Packets nmap --send-ip [target] nmap --send-ip 192.168.1.1

Port Scanning Options

Goal command example
Perform a Fast Scan nmap -F [target] nmap -F 192.168.1.1
Scan Specific Ports nmap -p [port(s)] [target] nmap -p 21-25,80,139,8080 192.168.1.1
Scan Ports by Name nmap -p [port name(s)] [target] nmap -p ftp,http* 192.168.1.1
Scan Ports by Protocol nmap -sU -sT -p U:[ports],T:[ports] [target] nmap -sU -sT -p U:53,111,137,T:21-25,80,139,8080 192.168.1.1
Scan All Ports nmap -p '*' [target] nmap -p '*' 192.168.1.1
Scan Top Ports nmap --top-ports [number] [target] nmap --top-ports 10 192.168.1.1
Perform a Sequential Port Scan nmap -r [target] nmap -r 192.168.1.1

Version Detection

Goal command example
Operating System Detection nmap -O [target] nmap -O 192.168.1.1
Submit TCP/IP Fingerprints www.nmap.org/submit/
Attempt to Guess an Unknown OS nmap -O --osscan-guess [target] nmap -O --osscan-guess 192.168.1.1
Service Version Detection nmap -sV [target] nmap -sV 192.168.1.1
Troubleshooting Version Scans nmap -sV --version-trace [target] nmap -sV --version-trace 192.168.1.1
Perform a RPC Scan nmap -sR [target] nmap -sR 192.168.1.1

Timing Options

Goal command example
Timing Templates nmap -T[0-5] [target] nmap -T3 192.168.1.1
Set the Packet TTL nmap --ttl [time] [target] nmap --ttl 64 192.168.1.1
Minimum # of Parallel Operations nmap --min-parallelism [number] [target] nmap --min-parallelism 10 192.168.1.1
Maximum # of Parallel Operations nmap --max-parallelism [number] [target] nmap --max-parallelism 1 192.168.1.1
Minimum Host Group Size nmap --min-hostgroup [number] [targets] nmap --min-hostgroup 50 192.168.1.1
Maximum Host Group Size nmap --max-hostgroup [number] [targets] nmap --max-hostgroup 1 192.168.1.1
Maximum RTT Timeout nmap --initial-rtt-timeout [time] [target] nmap --initial-rtt-timeout 100ms 192.168.1.1
Initial RTT Timeout nmap --max-rtt-timeout [TTL] [target] nmap --max-rtt-timeout 100ms 192.168.1.1
Maximum Retries nmap --max-retries [number] [target] nmap --max-retries 10 192.168.1.1
Host Timeout nmap --host-timeout [time] [target] nmap --host-timeout 30m 192.168.1.1
Minimum Scan Delay nmap --scan-delay [time] [target] nmap --scan-delay 1s 192.168.1.1
Maximum Scan Delay nmap --max-scan-delay [time] [target] nmap --max-scan-delay 10s 192.168.1.1
Minimum Packet Rate nmap --min-rate [number] [target] nmap --min-rate 50 192.168.1.1
Maximum Packet Rate nmap --max-rate [number] [target] nmap --max-rate 100 192.168.1.1
Defeat Reset Rate Limits nmap --defeat-rst-ratelimit [target] nmap --defeat-rst-ratelimit 192.168.1.1

Firewall Evasion Techniques

Goal command example
Fragment Packets nmap -f [target] nmap -f 192.168.1.1
Specify a Specific MTU nmap --mtu [MTU] [target] nmap --mtu 32 192.168.1.1
Use a Decoy nmap -D RND:[number] [target] nmap -D RND:10 192.168.1.1
Idle Zombie Scan nmap -sI [zombie] [target] nmap -sI 192.168.1.23 192.168.1.1
Manually Specify a Source Port nmap --source-port [port] [target] nmap --source-port 1025 192.168.1.1
Append Random Data nmap --data-length [size] [target] nmap --data-length 20 192.168.1.1
Randomize Target Scan Order nmap --randomize-hosts [target] nmap --randomize-hosts 192.168.1.1-20
Spoof MAC Address nmap --spoof-mac [MAC|0|vendor] [target] nmap --spoof-mac Cisco 192.168.1.1
Send Bad Checksums nmap --badsum [target] nmap --badsum 192.168.1.1

Output Options

Goal command example
Save Output to a Text File nmap -oN [scan.txt] [target] nmap -oN output.txt 192.168.1.1
Save Output to a XML File nmap -oX [scan.xml] [target] nmap -oX output.xml 192.168.1.1
Grepable Output nmap -oG [scan.txt] [targets] nmap -oG output.txt 192.168.1.1
Output All Supported File Types nmap -oA [path/filename] [target] nmap -oA ./output 192.168.1.1
Periodically Display Statistics nmap --stats-every [time] [target] nmap --stats-every 10s 192.168.1.1
133t Output nmap -oS [scan.txt] [target] nmap -oS output.txt 192.168.1.1

Troubleshooting and Debugging

Goal command example
Getting Help nmap -h nmap -h
Display Nmap Version nmap -V nmap -V
Verbose Output nmap -v [target] nmap -v 192.168.1.1
Debugging nmap -d [target] nmap -d 192.168.1.1
Display Port State Reason nmap --reason [target] nmap --reason 192.168.1.1
Only Display Open Ports nmap --open [target] nmap --open 192.168.1.1
Trace Packets nmap --packet-trace [target] nmap --packet-trace 192.168.1.1
Display Host Networking nmap --iflist nmap --iflist
Specify a Network Interface nmap -e [interface] [target] nmap -e eth0 192.168.1.1

Nmap Scripting Engine

Goal command example
Execute Individual Scripts nmap --script [script.nse] [target] nmap --script banner.nse 192.168.1.1
Execute Multiple Scripts nmap --script [expression] [target] nmap --script 'http-*' 192.168.1.1
Script Categories all, auth, default, discovery, external, intrusive, malware, safe, vuln
Execute Scripts by Category nmap --script [category] [target] nmap --script 'not intrusive' 192.168.1.1
Execute Multiple Script Categories nmap --script [category1,category2,etc] nmap --script 'default or safe' 192.168.1.1
Troubleshoot Scripts nmap --script [script] --script-trace [target] nmap --script banner.nse --script-trace 192.168.1.1
Update the Script Database nmap --script-updatedb nmap --script-updatedb

Ndiff

Goal command example
Comparison Using Ndiff ndiff [scan1.xml] [scan2.xml] ndiff scan_output1.xml scan_output2.xml
Ndiff Verbose Mode ndiff -v [scan1.xml] [scan2.xml] ndiff -v scan_output1.xml scan_output2.xml
XML Output Mode ndiff --xml [scan1.xml] [scan2.xml] ndiff --xml scan_output1.xml scan_output2.xml



Hits: 274
Added: 2010-12-28 13:06:21
Updated: 2010-12-28 13:12:02

[참고 문서] Hping CheatSheat

서버/WAS/DBMS 2010. 3. 5. 14:41 Posted by TEAMCR@K
Nmap CheatSheet (http://teamcrak.tistory.com/243) 에 이어서 Hping CheatSheet도 공개되었습니다.

사이트 : http://www.securitybydefault.com/2010/02/hping3-cheatsheet.html

파일 다운로드 (PDF파일) :
http://sbdtools.googlecode.com/files/hping3_cheatsheet_v1.0-ENG.pdf

[Tools] 유용한 툴 Cmdline

서버/WAS/DBMS 2010. 2. 23. 07:08 Posted by TEAMCR@K

DiamondCS 에서 제작된 Cmdline이라는 유용한 툴입니다.

Forensic에서 정보수집 할때도 사용되고 있으며, 모의해킹 점검할때도 간단한 정보들 확인할때 유용하게 쓰입니다.

http://www.diamondcs.com.au/consoletools.php

참고도서 : Malware Incident Response: Volatile Data on Windows Systems

IIS Security & Tools 사이트

서버/WAS/DBMS 2010. 1. 21. 09:29 Posted by TEAMCR@K
http://www.iis.net/downloads/Security

IIS에서 사용할 수 있는 Security Tools 들이 정리되어 있습니다.
URL Scan, Site Shell, Server Defender 등은 많이 사용되고 있죠?

설치하시고 웹서비스 중단되는 형상도 있으니 우선 테스트를 하시고 적용하시기 바랍니다.


Virus World Map

서버/WAS/DBMS 2009. 12. 10. 10:38 Posted by TEAMCR@K
http://www.fortiguard.com/map/worldmap.html
전세계 바이러스 분포 현황을 지도형태로 보기 쉽게 정리해놨네요..^^

해당 바이러스를 클릭하면 상세한 정보가 나옵니다.

Metasploit(Windows, ruby v1.9)에서 ORACLE dbi 설치 방법

서버/WAS/DBMS 2009. 11. 4. 20:23 Posted by 알 수 없는 사용자

Metasploit에서 oracle 관련한 익스플로잇을 실행하는 경우 dbi를 요구하는 경우가 있습니다.

공식 홈페이지에 포스팅이 되어있습니다.


그러나, 위의 방법은 우분투 8.04,8.10,9.04, Mac OS X에서 테스트를 하였지만 윈도우와 ruby 1.9 버전에서는 정상적으로 설치가 되지 않습니다. 

Metasploit 3.3 dev 버전은 ruby 1.9 버전이고, 실행한 환경도 Windows라 dbi 설치 방법을 찾아보았습니다.

RUBY/DBI 프로젝트 홈페이지 : http://rubyforge.org/projets/ruby-dbi/

RUBY/DBI 프로젝트 홈페이지에서 dbi gem파일을 다운로드합니다.
http://rubyforge.org/frs/download.php/63600/dbi-0.4.3.gem

다운로드한 파일은 cygwin 홈 디렉토리로 복사 또는 이동을 합니다.

Metasploit 3.3 dev 버전 설치시 디폴트 Cygwin 홈 디렉토리 경로는 C:\msf3\home\사용자명\ 입니다.

C:\msf3\shell.bat을 실행합니다.
$gem install dbi-0.4.3.gem





리눅스 보안을 강화시키기 위한 20가지 Tips를 정리를 잘한 문서입니다.

네트워크간 데이터 암호화, 불필요한 서비스 사용 제한, 계정 패스워드 강화 등에 대해서 간단하게 정리가 되어 있습니다.

무엇보단 참고 URL 로 정리한 부분이 더욱 눈에 띌정도로 많습니다. 같이 보시면 크게 도움이 될겁니다.

출처 : http://www.cyberciti.biz/tips/linux-security.html

VoIP를 통한 서비스 거부 공격

서버/WAS/DBMS 2009. 10. 19. 09:51 Posted by 알 수 없는 사용자

VoIP를 통한 서비스 거부 공격

(SIP method를 이용한 DoS Attack)


redjyjy@a3security.com
(A.K.A r3dy)


※ 본 연구 문서는 VoIP의 취약점 중 DoS Attack에 대하여 연구한 문서입니다. 민감하거나 악용될 우려가 있는 기술 방법 및 내용은 제한합니다.


I. VoIP를 통한 서비스 거부 공격

1. 개 요

DoS는 서비스 거부 공격으로 웹 서버를 연속적으로 호출함으로써 서버를 불능상태에 빠뜨리는 공격입니다. 방법은 간단하나, 파괴력은 막강하여 최근 이슈가 되고있는 공격 입니다. VoIP 기술은 인터넷 프로토콜을 이용하므로 인터넷 프로토콜의 취약점이 그대로 존재합니다. VoIP를 통한 서비스 거부 공격은 VoIP시스템 또는 단말에 서버를 연속적으로 호출하여 정상적인 서비스를 방해하는 공격 입니다.

2. 공격유형: 서비스 거부 공격

3. 공격영향도: 보통

4. 시스템 환경: VoIP 인프라



II. 위험 분석

1. 위험 분석
VoIP는 인터넷 프로토콜의 취약점인 서비스 거부 공격 취약점이 그대로 존재하게 됩니다. 이는 사용자간의 통신 패킷의 손실이 발생하거나, 계속적인 요청을 하는 등의 정상적인 서비스를 방해하게 되므로 VoIP의 궁극적인 목적인 사용자간의 원활한 통신을 하는것이 어려워지게 됩니다.


III. 대응 방안

1. SIP flooding detection module
해당 SIP패킷이 속한 세션에서 과도한 SIP메시지 송수신이 있는지를 State transition model과 상한 기준선(Threshold)을 사용하여 판단합니다.

2. VoIP인증, 도청에 대한 대응방안으로 SIPS(SIP over TLS)와 SRTP(Secure RTP)를 권고합니다.


IV. 세부내역


1. INVITE 서비스 거부 공격 (1)


다음은 대기중인 상대방(3078)의 사용자에게 INVITE method 패킷을 전송하는 화면입니다.

                                                  

                                                [그림 1] 대기중인 사용자에게 INVITE method패킷 전송


다음은 정상적인 사용자가 아닌 다른 ID로 패킷을 보내어, 연결박스가 실행된 화면입니다.


                                                                     [그림 2]  연결박스 실행

2. INVITE 서비스 거부 공격 (2)

다음은 대량의 INVITE패킷을 전송하여 목표 target에게 많은 양의 연결 요청을 시도하는 화면입니다.



                                                 [그림 3] 대량의 INVITE패킷 전송


3. BYE method 서비스 거부 공격

다음은 통화를 하고 있는 상대방 중 3076번의 사용자에게 BYE method패킷을 전송하여 통화 방해를 시도하는 화면입니다.
테스트 결과 실제 전화가 끊어지지는 않고, 통화 내용이 끊겨서 전달되어 통화 음질이 불량하였습니다.


                                                 [그림 4]  BYE method패킷 전송하여 통화 방해 시도



※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.