View
Hping3
hping은 TCP/IP 프로토콜에 대한 무료 패킷 생성기이자 분석기다. hping은 보안 감사, 방화벽과 네트워크 대역 테스트 도구 중 하나다. 지금은 엔맵 포트 스캐너에서 네트워크 스캔 기술을 악용하는 데 사용된다.
hping
의 새로운 버전인 hping3은 스크립트 프로그래머가 낮은 수준의 TCP/IP 패킷 조작이나 분석에 관한 스크립트를 작성할 수
있게 Tcl 언어를 사용하고 TCP/IP 패킷의 문자열을 기반으로, 아주 짧은 시간에 사람이 읽을 수 있는 설명을 위한 엔진을
구현한다.
- PING -> ICMP 프로토콜 기본
- HPING -> TCP/IP 프로토콜 기본(옵션으로 변경 가능)
옵션 (맨 밑에 자세한 옵션 있음)
-a : 변조할 IP
-p : 포트번호
-S : Syn Flag - 무한 3wayhandshake 연결 시도 공격
--rand-source : 출발지 IP 랜덤 변조
--flood : 가능한 계속 플러딩
--icmp : ICMP 모드
1) ping of death 공격
- 많은 양의 패킷을 보내 시스템 마비시키는 공격
hping3 --icmp --rand-source 192.168.30.15 -d 65000 --flood
icmp 프로토콜을 사용하여, 출발지 ip 주소를 랜덤하게 생성한 후 192.168.30.15 로 65000바이트의 패킷을 flooding 방식으로 공격을 하게 된다.
캡쳐된 패킷을 살펴보면 잛은 시간내에 수많은 패킷이 전송된것을 알수 있다.
수많은 조각난 패킷들이 전송된 모습을 살펴 볼수 있으며 전송된 데이터의 크기도 살펴볼수 있다.
일반적인 ping 과는 비교되는 모습이다. 네트워크의 특성상 한번 나누어진 패킷이 다시 합쳐져서 전송되는 경우는 거의 없다. 해당 공격을 받은 대상은 이 수많은 패킷으로 인하여 시스템이 마비가 된다.
2) Syn flooding 공격
- 출발지를 랜덤하게 바꿔 공격 대상과 대량의 연결 상태를 맺어 꽉 차게 되면 다른 이용자는 접속할 수 없게 만드는 공격
hping3 -S --rand-source 192.168.197.133 -p 80 --flood
-S 옵션으로 SYN 플래그 전송을 하며, 출발지 IP는 랜덤하게 변경해서 192.168.197.133 웹서비스 (80)으로 flooding 공격을 한다.
Syn flooding 공격시 3웨이 핸드쉐이킹 과정
공격을 받은 서버에서의 연결 상태를 살펴보자.
웹서버의 80 포트가 수많은 IP와의 연결을 맺기 위해 대기중이다. 이런경우 다른 정상적인 이용자들은 접속이 불가능 해진다.
패킷을 살펴보면 짧은 시간 동안 수많은 IP들이 웹서버 192.168.197.133 으로 syn 을 보내는 모습이 보인다.
주요기능
- 방화벽 테스트
- 고급 포트 스캐닝
- 다른 프로토콜, TOS, 조각을 사용해 네트워크 테스트
- 수동 경로 MTU 발견
- 고급화된 Traceroute
- OS 핑거프린팅
- 가동 시간 추측
- TCP/IP 스택 감사
주요 옵션 |
설명 |
-H --help |
도움말 표시 |
-v --version |
버전 정보 표시 |
-c -count |
패킷 개수 설정 |
-n -numeric |
숫자 출력 |
-q --quiet |
Qiuet |
-I --interface |
인터페이스 이름 |
-V --verbose |
자세히 보기 |
-D --debug |
디버깅 정보 |
-z --bind |
bind. Ctrl + z 사용(기본값: 목적지 포트) |
-Z --unbind |
해제. Ctrl + z 사용 |
Mode 옵션 |
설명 |
-0 --rawip |
RAW IP 모드 |
-1 --icmp |
ICMP 모드 |
-2 -udp |
UDP 모드 |
-8 -scan |
스캔 모드 |
IP 주요 옵션 |
설명 |
-a --spoof |
Spoof에 사용하는 소스 IP 지정 |
--rand-dest |
랜덤 목적지 주소 모드 |
--rand-source |
랜덤 소스 주소 모드 |
-t --ttl |
TTL(기본값: 64) |
-N --id |
id(기본값: 무작위) |
-f --frag |
플래그 패킷을 더 많이 분할시킴 |
-x --morefrag |
fragments flag를 더 많이 설정 |
-y --dontfrag |
fragment flag를 설정하지 않음 |
-g --fragoff |
fragment offset 설정 |
-m --mtu |
가상의 MTU 설정 |
-G --rroute |
RECORD_ROUTE 옵션과 경로를 표시하며, 버퍼를 포함 |
--lsrr |
반드시 통과해야 하는 IP 지정 |
--ssrr |
모든 통과 경로를 지정 |
-H --ipproto |
IP 프로토콜 필드 설정(RAW IP 모드에서만 가능) |
ICMP 주요 옵션 |
설명 |
-C --icmptype | ICMP 타입 설정(기본값: echo request) |
-K --icmpcode |
ICMP 코드 설정(기본값: 0) |
--force-icmp |
모든 종류의 ICMP 사용 |
--icmp-gw |
설정한 게이트웨이 주소로 ICMP 리다이렉션 |
UDP/TCP 주요 옵션 |
설명 |
-s --baseport |
기본 소스 포트(기본값: 무작위) |
-p --destport |
[+][-] <port> 목적지 포트(기본값: 0) |
-k --keep |
소스 포트를 계속 유지 |
-w --win |
윈도우 크기 지정(기본값: 64) |
-O --tcpoff |
가짜의 TCP 데이터 오프셋 설정 |
-Q --seqnum |
TCP 시퀀스 정보를 보여줌 |
-M --setseq |
TCP 시퀀스 번호를 설정 |
-L --setack |
TCP 응답 설정 |
-F --fin |
TCP 응답 설정 |
-S --syn |
SYN 플래그 설정 |
-R --rst |
RST 플래그 설정 |
-P --push |
PUSH 플래그 설정 |
-A --ack |
ACK 플래그 설정 |
-U --urg |
URG 플래그 설정 |
-X --xmas |
X unused 플래그 설정(0x40) |
-Y --ymas |
Y unused 플래그 설정(0x80) |
공통 주요 옵션 |
설명 |
-d --data |
데이터 크기 설정(기본값: 0) |
-j --dump |
16진수로 패킷 덤프 |
-J --print |
인쇄 가능한 문자로 패킷 덤프 |
-T --traceroute |
Traceroute 모드 |
--tr-stop |
Traceroute 모드에서 처음 ICMP를 발생 시키지 않음 |
[펌] http://cafe.naver.com/sec/book3116746/8937
[참고] http://cafe.naver.com/sec/book3116746/8937
[동영상] https://www.youtube.com/watch?v=W6rdho7P5us
'Network Security' 카테고리의 다른 글
Fragrouter 설치 (0) | 2016.03.23 |
---|---|
Driftnet (0) | 2016.03.23 |
Netenum (0) | 2016.02.27 |
Banner Grabbing (0) | 2015.06.08 |
Macchanger (0) | 2013.04.14 |