[원문: http://tools.kali.org/information-gathering/cdpsnarf]


정의

CDPSnarf is a network sniffer exclusively written to extract information from CDP packets.

It provides all the information a “show cdp neighbors detail” command would return on a Cisco router and even more.

 간략하게 CDPSnarf는 네트워크 스니퍼로 CDP 패킷으로부터 정보를 추출하는 것이다.
위의 CDP는 Cisco Device Protocol이며, 한국어로 억지스럽게 번역(?)하자면 CDP를 잡아채다 정도로 이해할 수 있다.


얻을 수 있는 정보는 아래와 같다.

  • Time intervals between CDP advertisements
  • Source MAC address
  • CDP Version
  • TTL
  • Checksum
  • Device ID
  • Software version
  • Platform
  • Addresses
  • Port ID
  • Capabilities
  • Duplex
  • Save packets in PCAP dump file format
  • Read packets from PCAP dump files
  • Debugging information (using the “-d” flag)
  • Tested with IPv4 and IPv6

Usage

테스트 환경을 구축하기가 어려운 형편이었기에 CDP 샘플 패킷을 구해 read형식으로만 확인할 수 있었다.

환경이 구축되어 있다면 아래와 같은 명령어를 사용하면 된다.

#cdpsnarf -i eth0 -w <pcap_file>    

나는 읽어야 되기 때문에 다음과 같은 명령어를 사용하였다.

#cdpsnarf -r <pcap_file_name>

위의 사진과 같이 맥주소, 버전, Device ID, platform 등의 내용을 추출할 수 있는 것을 확인할 수 있다.

'해킹 > kali tools' 카테고리의 다른 글

[Information-Gathering06]cookie cadger  (0) 2016.02.23
[Information-Gathering05]cisco-torch  (0) 2016.02.23
[Information-Gathering03]automater  (0) 2016.02.22
[Information-Gathering02]amap  (0) 2016.02.22
[Information-Gathering01]acccheck  (0) 2016.02.22

[원문: http://tools.kali.org/information-gathering/automater]


정의

Automater is a URL/Domain, IP Address, and Md5 Hash OSINT tool aimed at making the analysis process easier for intrusion Analysts. Given a target (URL, IP, or HASH) or a file full of targets Automater will return relevant results from sources like the following: IPvoid.com, Robtex.com, Fortiguard.com, unshorten.me, Urlvoid.com, Labs.alienvault.com, ThreatExpert, VxVault, and VirusTotal.

 간략하게 Automater는 URL/Domain, IP 주소 등의 정보를 수집 및 분석하는 도구이다. 

위의 내용을 보면 IPvoid.com, Robtex.com, Fortiguard.com 등에서 정보를 수집한다.


Usage

옵션에 대해서는 위의 내용을 참고하면 된다.


구글을 대상으로 automater를 사용하였다.

위의 사진을 보면 알 수 있듯이 URL이나 Malcode 등 결과값이 없다. 정보 수집하는 곳 중, https://malc0de.com이 뭔가 직접적으로 나에게 와닿아 사이트에 접속해보았다.(http://malc0de.com/database/)

위의 사진과 같이 mal코드에 대해 저장하는 모습이다.


다음으로는 ip블랙리스트를 확인해보았다.(http://malc0de.com/bl/IP_Blacklist.txt)

아래의 그림과 같이 2016년 2월 21일 기준으로 블랙리스트 IP들을 확인할 수 있었다.


위의 주소 중 하나를 대상으로 automater를 확인해보았다.

중간 생략..

위는 감지한 내용의 그림이다.

사용해본결과 적은 옵션에도 불구하고 사용법은 깔끔하고 많은 것을 제공해 줄 것 같다.

일을 하다 의심이 될만한 ip를 조회하는데 좋은 툴일 것으로 사료된다.





'해킹 > kali tools' 카테고리의 다른 글

[Information-Gathering06]cookie cadger  (0) 2016.02.23
[Information-Gathering05]cisco-torch  (0) 2016.02.23
[Information-Gathering04]cdpsnarf  (0) 2016.02.23
[Information-Gathering02]amap  (0) 2016.02.22
[Information-Gathering01]acccheck  (0) 2016.02.22

[원문: http://tools.kali.org/information-gathering/amap]


정의

Amap was the first next-generation scanning tool for pentesters. It attempts to identify applications even if they are running on a different port than normal. It also identifies non-ascii based applications. This is achieved by sending trigger packets, and looking up the responses in a list of response strings.

 간략하게 Amap은 모의해킹을 위한 첫 스캐닝 도구로 일반적인 포트번호가 아닌 다른 포트로 실행 중인 어플리케이션까지도 탐지한다.


Usage

솔직히 말해서 amap의 기능들은 nmap을 통해 확인할 수 있기 때문에 굳이 필요한 기능인지 싶지만 first next-generation scanning tool이라고 명시되어 있기에 예의상 확인하고자 한다.


주요 옵션은 아래와 같다.

[Mode]

-A    Map application; 기본값

-B    트리거는 보내지 않고 배너만 확인

-P    배너나 어플리케이션은 중요하지 않고 포트 스캔만 수행

[Options]

-1    only 1번만 트리거 패킷 전송; speeeeeed!

-6    IPv4대신 IPv6 사용

-b    응답으로 배너를 ascii 로 출력

-i FILE    nmap이 File로부터 포트를 읽기위한 아웃풋 파일

-u    UDP에 특정화된 포트 출력(기본값: TCP)

-R    RPC는 사용 안함

-H    영향을 주지 않을 정도로만 트리거 패킷 전송

-U    인식할 수 없는 응답까지 덤프

-d    모든 응답 덤프

-v    자세히

-q    닫힌 포트는 출력안함

-o FILE [-m]    아웃풋을 FILE로 만들어줌

-c CONS   병렬 연결수 지정(기본값:32, 최대값:256)

-C RETRIES    다시 연결 시도 회수 지정(기본값:3)

-T SEC    연결 시도 시간 지정(기본값: 5)

-t SEC    응답 제한 시간 지정(기본값: 5)

-p PROTO    지정된 프로토콜을 위해서만 트리거 전송

TARGET PORT    스캔 하기 위한 타겟 주소 및 포트 

bqv를 추천


target pc:192.168.100.5(ubuntu)

현재 LISTEN port확인

칼리에서 target pc에 amap으로 확인

기능이 nmap에도 제공되기 때문에 굳이 사용은 잘 안하게 될 듯..

'해킹 > kali tools' 카테고리의 다른 글

[Information-Gathering06]cookie cadger  (0) 2016.02.23
[Information-Gathering05]cisco-torch  (0) 2016.02.23
[Information-Gathering04]cdpsnarf  (0) 2016.02.23
[Information-Gathering03]automater  (0) 2016.02.22
[Information-Gathering01]acccheck  (0) 2016.02.22

[원문: http://tools.kali.org/information-gathering/acccheck]


정의

The tool is designed as a password dictionary attack tools that targets windows authentication via the SMB protocol.
It is really a wrapper script around the 'smbclient' binary, and as a result is dependent on it for its execution.

 간략하게 accheck는 SMB프로토콜을 통해 윈도우 인증을 대상으로 사전 공격(dictionary attack)을 하는 것이다.
즉, 미리 사전에 유추 단어를 저장해놓고 이를 기반으로 공격하는 형태로 이루어져있다.


Usage

위의 사용법을 보면 알 수 있듯이 꽤 간단하다.


주요 옵션은 아래와 같다.

-t [단일 호스트 IP 주소]

-T [파일로 구성된 타겟 IP 주소 리스트]

-p [단일 패스워드]

-P [파일로 구성된 패스워드 리스트]

-u [단일 사용자]

-U [파일로 구성된 사용자 리스트]

-v [자세히 봄]


예제

#acccheck -t 10.10.10.1

//단일 사용자의 주소만을 사용하며 이 때 사용자는 administrator이고 패스워드는 없을 때 가능

#acccheck -t 10.10.10.1 -P password.txt

//패스워드 리스트파일 password.txt를 사용하여 파일 리스트에 일치하는 패스워드로 administrator계정에 일치시킴

#acccheck -t 10.10.10.1 -U users.txt -P password.txt

//user list에 있는 모든 사용자를 대상으로 패스워드 유추

#acccheck -t 10.10.10.1 -u administrator -p password

//administrator라는 유저로 password 가 맞는지 유추




'해킹 > kali tools' 카테고리의 다른 글

[Information-Gathering06]cookie cadger  (0) 2016.02.23
[Information-Gathering05]cisco-torch  (0) 2016.02.23
[Information-Gathering04]cdpsnarf  (0) 2016.02.23
[Information-Gathering03]automater  (0) 2016.02.22
[Information-Gathering02]amap  (0) 2016.02.22

http://www.cse.scu.edu/~tschwarz/COEN252_09/Lectures/IPTraffic.html 참고

IP fragmentation 정의

- IP 프로토콜은 IP패킷을 작은 몇개의 패킷으로 나누어 전송되고 목적지 시스템에서 재조합하는 것을 허용하는데 이러한 과정을 fragmentation이라고 부른다. IP fragmentation은 데이터그램이 네트워크를 통해 전송될 때, 전송되는 IP 데이터그램의 크기가 전송될 수 있는 최대크기 보다 클 경우 발생한다.

- ethernet에서 전송 가능한 IP 데이터그램의 최대크기(MTU)는 1,500바이트이다. 만약 1,500바이트보다 큰 데이터그램이 전송된다면 fragmentation이 발생하게 된다.


IP fragmentation 예제


Kali linux(192.168.100.14)에서 target pc(192.168.100.5)에 4000바이트의 ICMP데이터를 전송하였다.


데이터그램의 총 크기는 4,028(4000+20(ip header)+8(icmp header))바이트가 된다. 

그러나 데이터그램의 최대 크기는 1,500바이트이기 때문에 fragment가 발생한다.

아래는 예이다. 자세한 내용은 최상위 첨부를 참고하면 된다.

다른건 위의 것과 동일하고 다만 ID만 54321에서 40818로 생각하면 되겠다.


요약

1. 공격자는 타겟에 4,000바이트의 ICMP 데이터를 전송하였다.

2. 데이터 그램의 총 바이트는 4,028이 된다.(4,000+20(ip header)+8(icmp header))
3. MTU가 1,500바이트이기 때문에 3개로 fragment로 쪼개진다.

  1)첫 조각1,500= 20(ip header)+8(icmp header)+1,472(data)    //남은 데이터 수: 2,528

  2)두 번째 조각1,500= 20(ip header)+1,480(data)              //남은 데이터 수: 1,048

  3)세 번째 조각1,068= 20(ip header)+1,048(data)

  4,068-4028=40(ip header*2)


공격 유형
(그림 출처: http://www.slideshare.net/gofortution/best-3178984)

1) tiny fragment attack

- tiny fragment는 최초의 조각을 아주 작게 만들어서 네트워크 침입탐지시스템이나 패킷 필터 장비를 우회할 수 있다.
TCP 헤더(default 20바이트)가 2개의 조각으로 나뉘어질 정도로 작게 쪼개서 목적 포트가 두 번째 조각에 위치하도록 함

  침입탐지시스템이나 패킷필터 장비에서 포트번호를 확인하는데 작게 쪼개어진 첫 번째 조각을 통과 시킨다. 또한, 실제 포트가 포함된 두 번째 조각을 검사 없이 통과시키기 때문에 서버에서 조각은 재 조합이 되어 공격자는 무사히 연결할 수 있다.  



2) fragment overlap

- fragment overlap공격을 위해 공격자는 두 개의 조각을 생성한다.
첫 조각에는 필터 장비에서 허용하는 예를 들면 80포트를 가진다. 그리고 두 번째 조각에는 offset을 아주 작게 하여 재 조합 시, 두 번째 조각을 첫 번째 조각의 일부분을 덮어쓰게 한다. 일반적으로 첫 조각의 포트 번호를 포함하여 덮어쓴다.

침입 장비에서는 첫 번째 조각이 허용된 포트번호 80이기 때문에 통과시키고 두 번째 조각은 이미 허용된 id이기 때문에 역시 통과시키게 된다. 통과되면 재 조합 시 첫 번째 조각을 덮어쓰기 때문에 두 번째 포트번호의 포트번호로 전달되게 된다.

위의 그림을 보면 80번 포트는 OK를 해서 통과되고 이후 2번째 조각의 23번 포트로 1번포트를 덮어쓰고 서버 23번 포트의 응용프로그램으로 전달되는 것을 의미한다.


3) DoS공격

(http://kkn1220.tistory.com/75 참고)

DoS(Denial of Service) 정의

  • DoS공격은 상대방 서버가 서비스를 하지 못하도록 하는 서비스 거부 공격
  • 공격대상이 수용할 수 있는 능력 이상의 정보나 사용자 또는
    네트워크의 용량을 초과시켜 정상적으로 작동하지 못하게 함
  • 공격의 종류에는 특정 프로그램의 취약점을 이용한 공격, 네트워크
    특성상 발생하는 취약점 공격, 무차별 공격, 서버 및 시스템 마비 등
  • 분산 환경에서 발생할 수 있는 DoS공격을 DDoS(Distributed DoS)라 함












DoS 공격 유형


<출처: University of TORONTO>

1) Ping of Death

- Ping of Death 공격의 기본은 Ping을 이용하여 ICMP 패킷을 정상적인 크기보다 아주 크게 만드는 것

 이렇게 만들어진 패킷은 네트워크를 통해 라우팅되어 공격 네트워크에 도달하는 동안 아주 작은 조각(fragment)이 됨

 자세한 사항은 (http://kkn1220.tistory.com/76 참고)

 공격 대상 시스템은 이렇게 작게 조각화된 패킷을 모두 처리해야 하므로 정상적인 Ping의 경우보다 많은 부하가 걸림

- RFC-791 Internet Protocol에 따르면 헤더를 포함한 IP 패킷의 최대길이는 65,535(=16비트-1=2^16-1)까지로 제한되어 있다.

Ping of Death

 결국 공격자가 65,535보다 큰 사이즈의 패킷을 보내게 되면 수많은 조각이 생성되고 해당 Buffer가 overflow되어, 대상 시스템 및 서버는 충돌이 일어난다.

 통상적으로 IP 패킷의 헤더는 특별한 옵션이 없으면 20바이트를 보내고, ICMP ECHO request 패킷은 8바이트의 ICMP 헤더를 사용하기 때문에 실제 데이터 길이의 최대값은 65,507(65,535-20-8)바이트가 된다. 하지만 요새 시스템은 비정상적으로 큰 ICMP 데이터를 발생시키지 못하도록 하기 때문에 많이 막혀있다.

 기본적인 ping을 살펴보자

192.168.100.3(window)에서 192.168.100.5(target-ubuntu)로 ping을 보내고 kali에서 tcpdump로 5번을 지켜보았다.
귀찮아서 3번에 tcpdump를 안한것은 아니다.

기본적으로 ping은 32바이트(window)를 보낸다.(리눅스의 경우 56) 
그렇기 때문에 위에서 설명했듯이 32+20(ip header)+8(request packet) 총 60바이트의 길이가 출력될 것이다.

즉, 총 length는 60을 확인할 수 있다.


앞서 요새 많이 막혔다고 하는데 실제로 다음과 같다.

실제 보낼 수 있는 데이터 길이의 최대값은 65,507(65,535-20-8)바이트이다.

윈도우의 경우 65500을 넘지 못한다.

kali의 경우 65507까지만 허용한다.

65,507을 넘을 경우 허용하지 않는다.

jolt2라는 툴을 사용하면 된다고 몇 개의 다큐먼트들이 있지만 다음에...(윈도우 NT, 2000 시스템 가능 확인 필요)

2) SYN Flooding (그림 출처: wiki)

- SYN flooding이란 SYN을 넘치게 하는 것을 뜻한다. 즉 클라이언트가 서버의 SYN Queue를 overflow시켜 서버를 오동작하거나 충돌시키는 공격이다.

위의 그림은 정상적인 3-way handshake 내용이다. 

1. 클라이언트 alice는 서버에 접속을 요청하는 SYN패킷을 보낸다. 이 때 상태는 SYN/ACK 응답을 기다리는 SYN_SENT이다.

2. 서버는 SYN요청을 받고 alice에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고 alice의 ACK응답을 기다린다. 이때 서버의 상태는 SYN_RECEIVED이다.

3. alice는 서버에 ACK를 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 된다. 서버의 상태는 ESTABLISHED이다.

위의 그림은 SYN flood공격 모습이다. 

1. attacker는 스푸핑된 ip를 가지고 서버에 다수의 패킷을 보낸다. 하지만 ACK를 응답하지 않기 때문에 이를 half-opened라 부른다.

2. 서버는 스푸핑된 ip가 네트워크에 존재하지 않기 때문에 SYN/ACK패킷을 보낼 수 없고, 서버의 자원은 계속 소비하게 된다.
즉 SYN Queue의 내용은 계속 유지된다.
3. 합법클라이언트 alice는 서버에 연결을 시도하지만 거절당하게 된다.

4. attacker는 무한으로 보내게 되면 결국 서버의 Queue는 추가만 되기 때문에 overflow가 발생하게 된다.


공격: kali linux(192.168.100.14) -> target pc(192.168.100.5), fake ip(192.168.100.50)

위는 kali에서 기본적으로 제공하는 hping3으로 192.168.100.5에 192.168.100.50이라는 src ip로 80번의 목적지 포트에 SYN패킷을 초당 10개씩 보내라는 것을 의미한다. (hping3 소개: http://kkn1220.tistory.com/99 참고)

tcpdump로 확인 결과 flag가 S만 출력되는 것을 확인할 수 있다.


3) land attack (그림 출처: http://docstore.mik.ua/orelly/networking_2ndEd/fire/ch04_08.htm)

- 패킷을 전송할 때 출발지 IP주소와 목적지 IP주소 값을 타겟의 IP주소 값으로 똑같이 만들어서 타겟으로 보낸다.

- 시스템은 처음 시도된 SYN에 대한 reply 패킷을 출발지 IP 주소값을 참조하여 그 값을 목적지 IP주소 값으로 설정하여 패킷을 보낸다. 그러나 이 값은 자기 자신의 IP 주소값이기 때문에 네트워크 밖으로 나가지 않고 자기 자신에게 돌아오며 land 공격은 동시 사용자를 점유하는 것 동시에 CPU부하 또한 올리게 된다.

Figure 4-9

공격: kali linux(192.168.100.14) -> target pc(192.168.100.5)

kali에서 기본적으로 제공하는 hping3을 가지고 출발지ip와 목적지ip를 타겟ip로 설정하고 포트를 100으로 설정하였다.

첫 패킷을 확인하면 192.168.100.5.100 > 192.168.100.5.100 을 확인할 수 있는데 land attack 패치 이후 이후 패킷에서는 src port가 자동 증가되어 land attack에 피해를 입지 않는 것을 확인할 수 있다.


4) smurf attack (그림 출처: https://blog.cloudflare.com/deep-inside-a-dns-amplification-ddos-attack)

1. smurf공격은 공격자가 타겟의 IP로 스푸핑한 후, 타겟이 속해 있는 broadcast network로 broadcast 요청을 보낸다.

2. ICMP request를 수신한 컴퓨터들은 타겟에 reply 패킷을 보낸다.

3. 대량의 ICMP reply를 수신한 타겟은 과부하 상태가 된다.

Deep Inside a DNS Amplification DDoS  
Attack

위의 그림을 보면 공격자는 라우터에 타겟의 주소 9.9.9.9로 스푸핑하여 요청한다. 라우터는 각각 디바이스에 타겟의 IP로 request요청을 한다. 결국 각각의 디바이스들은 타겟에 reply 패킷을 보내게 된다.

hping3 [broadcast ip] -a [target ip] [packet type] --flood

kail#hping3 192.168.100.255 -a 192.168.100.5 --icmp --flood

kali에서 tcpdump결과 5번 target에서 255번으로 request를 하였고, 실제로 8번과 6번이 현재 연결되어 있는데 reply응답을 한 것을 확인할 수 있다.

실제로 위 명령을 실행한 결과 나의 컴퓨터는 컨트롤 c로 멈추기 전 동안 정상적이지 못했다... 직접 해보시길.......


teardrop 업데이트 필요

Spoofing

- 스푸핑(Spoofing)이란 '속이다'라는 의미를 가짐

IP address, host name, Mac address 등 여러가지를 속일 수 있고, 스푸핑은 이런 속임을 이용한 공격을 총칭

인터넷이나 로컬에서 존재하는 모든 연결에 스푸핑이 가능하며, 정보를 얻어내는 것 이외에 시스템을 마비시키는 것이 가능

- 일반적으로 TCP/IP 네트워크 환경에서의 IP주소나 ARP주소 등으로 상대를 인식하는 취약성을 가지고 있기 때문에 내가 아닌

남으로 위장하는 것이 수월하고 현재까지도 문제점으로 지적되고 있다.


1. ARP 스푸핑 공격


1) B(Attacker)는 A와 C에게 자신의 MAC주소로 속이고 A와 C의 컴퓨터로부터 패킷을 받게됨

2) A와 C의 패킷을 읽은 후 정상적으로 상대방에게 패킷을 보내주면 A와 C는 정상적으로 주고 받았다고 생각하게 됨


아래는 arp spoofing 전의 A에서의 arp테이블이다.

공격자 B는 A에게 MAC주소를 속이게 된다.

A에서 다시 보면 B와 gateway의 맥주소가 같음을 확인할 수 있다.

이 후 A에서 전달되는 패킷은 B에서 확인할 수 있음을 보여주는 예이다.

사용 예는 http://kkn1220.tistory.com/72 를 참고하면 되겠다.


2. IP 스푸핑 공격

- IP 스푸핑은 시스템간의 신뢰 관계를 이용한 것으로 관계가 설정된 상태에서 클라이언트 시스템은 서버에 접속할 때, 자신의 IP주소로 인증을 하고 별도의 패스워드 없이 로그인이 가능하도록 만든 것이다.

 원격지 접속 서비스 중 r로 시작하는 rsh, rcp 등의 명령이 주로 IP기반으로 인증하는 서비스

- TCP/IP 프로토콜의 약점을 이용한 IP spoofing 방법

1) Sequence number guessing

2) SYN flooding

3) Connection hijacking

4) Connection killing by RST

5) Connection killing by FIN

6) SYN/RST generation

7) killing the INETD(네트워크데몬)

8) TCP window spoofing

일반적으로 IP Spoofing이란 1)Sequene number guessing, 2)SYN flooding 을 주로 사용


3. DNS 스푸핑 공격

- DNS 스푸핑은 DNS(Domain Name Server)에서 전달되는 IP 주소를 변조하거나 DNS의 서버를 장악하여 사용자가 의도하지 않은 주소로 접속하게 만드는 공격 방법

<정상적인 DNS 서비스> 출처: 한빛미디어

1) 클라이언트는 접속하고자 하는 도메인 이름에 해당하는 IP주소를 이미 설정된 DNS서버에 물어봄(DNS query packet전달)

2) DNS서버는 해당하는 도메인 이름에 대한 IP주소를 클라이언트에게 전달

3) 받은 IP주소를 가지고 클라이언트는 해당 웹서버로 접속


<DNS 스푸핑>

1) 클라이언트가 DNS 서버로 DNS query packet을 보내는 것을 확인(arp spoof 선행 작업 필요)

2-3) 공격자는 로컬에 존재하므로 DNS 서버보다 가까운 위치에 잇기 때문에 DNS 서버가 올바른 DNS response packet을 보내기 전에 위조된 DNS response packet을 클라이언트에 전달

4) 클라이언트는 공격자가 보낸 packet을 올바른 packet으로 인식하고 웹에 접속(DNS 서버 packet은 버림)

사용 예는 http://kkn1220.tistory.com/72 를 참고하면 되겠다.



'해킹 > 해킹' 카테고리의 다른 글

IP fragmentation을 이용한 공격  (0) 2016.02.12
DoS(Denial of Service) 소개 및 공격유형  (0) 2016.02.12
스니핑 도구 dsniff 소개  (0) 2016.02.02
스니핑 도구 tcpdump 소개  (0) 2016.02.02
스니핑(sniffing) 소개  (0) 2016.02.02

Dsniff

- Dsniff는 스니핑을 위한 자동화 도구이다. 많이 알려진 툴이며, 단순한 스니핑 도구가 아니라 스니핑을 위한 다양한 툴이 패키지처럼 만들어져 있다.

- 무차별 모드에서의 패킷을 캡쳐할 수 있는 특징을 가진다.


- Dsniff 가 읽어낼 수 있는 패킷의 종류

-> ftp, telnel, http, pop, nntp, imap, snmp, ldap, rlogin, rip, ospf, pptp, ms-chap, nfs, yp/nis +, socks, x11, cvs, IRC, ATM, PostageSQL, Citrix ICA, sql, auth 등


우분투에서는 

$sudo apt-get install dsniff (칼리는 기본 제공)

사실 설치 방법은 복잡하다.

LIBNET 설치 -> LIBPCAP 설치 -> DB 라이브러리 설치 -> LIBNIDS 설치 -> OPEN SSL 설치 -> DSNIFF 설치

굳이 우분투에 설치하고 싶으신 분들은 

(https://hplearn.co.kr/upload/lecture_pds/main3%20-%20session%201%20-%20Dsniff%EB%A5%BC%20%EC%9D%B4%EC%9A%A9%ED%95%9C%20password%20hijacking%20%EC%8B%A4%ED%97%98%201%20-%20dsniff%20%EC%84%A4%EC%B9%98-1.pdf) 참고



Dsniff 설치 시 설치 되는 툴


filesnarf     NFS 트래픽에서 스니프한 파일을 현재 디렉토리에 저장 

macof        스위치를 허브와 같이 작동하게 하기 위하여 임의의 MAC 주소로 스위치의 MAC 테이블을 오버플로우 시킴 

urlsnarf     HTTP의 모든 URL을 가로챔 

mailsnarf    SNMP와 POP을 스니프하여 이메일을 볼 수 있게함 

msgsnarf    채팅 메시지를 스니핑 

tcpkill       탐지할 수 있는 TCP 세션 끊음 

tcpnice      ICMP source quench 메시지를 보내 특정 TCP 연결을 느리게 만든다.  

(속도가 빠른 네트워크에서 스니프 할 때)

arpspoof     ARP 스푸핑 공격 

dnsspoof    DNS 스푸핑 공격 


옵션

Usage: dsniff [-cdmn] [-i interface | -p pcapfile] [-s snaplen]

              [-f services] [-t trigger[,...]] [-r|-w savefile]

              [expression]


-d: debugging mode 사용

-m: 자동 프로토콜 탐지 기능 사용

-n: IP이름을 풀이 하지 않음

-i: interface: 사용할 장치 지정

-w: savefile: 스니핑한 결과를 지정한 이름으로 저장



위의 기능 중 전부 하기에는 시간적 문제 및 귀찮아서 그럴싸한 몇 가지를 테스트해보았다.


Macof - LAN에 random MAC addresses에 트래픽을 계속 발생하게 하여 스위치 메모리를 고갈 시키는 것

macof <-s 출발지> <-d 목적지> <-e 목적지 하드웨어주소> <-x 출발포트> <-y 목적지포트> <- i 장치> <-n 회수>

예) macof -d 192.168.100.5(희생자 IP) -i eth0    (예에서는 그냥 ip로 어떤 것을 의미하는지 보여주기 위함)



URLsnarf - CLF(Common Log Format) 를 사용하여 HTTP 패킷을 가로챈 후 현재 클라이언트가 사용하는 URL을 알려줌

urlsnarf <-i 인터페이스> <-p pcap파일> <-v 자세히 pattern[URL 정규 표현식 지정]>
예) urlsnarf -i eth0        //host지정 시 host <ip주소> 

//test에서는 한 명의 희생자밖에 없기 때문에 지정 안함 

192.168.100.5에서 접속하는 url 획득


arpspoof - arpspoof는 양 서버사이에서 스니핑하고자 하는 서버인 것처럼 MAC을 위조하여 트래픽을 포워딩하는 것인데 실제로 해킹을 할 때 arpspoof를 마치 게이트웨이 인듯 사용하는 경우가 많다.

(http://kkn1220.tistory.com/32)를 참고하면 arpspoof를 한 것을 확인할 수 있다.

다른 방법으로는 다음과 같다.


희생자 우분투(192.168.100.5)에서 arp-a를 입력했을 때 공격자 14번과 1번 게이트웨이의 맥주소는 다른 것을 확인할 수 있다.

하지만 arpspoof를 하게 되면 다음과 같이 14번은 1번이 마치 자신의 맥인것 마냥 속이게 되며 패킷을 본인에게 향하게 한다. 

이를 악용하여 tcpdump라든지 기타 방법을 사용하여 패킷을 확인할 수 있다.


arpspoof <-i 인터페이스> <-t 타겟> host




dnsspoof - 말그대로 DNS 주소를 속이는 것이다.

이를 위해 위에서 했던 것을 토대로 전체적인 시나리오를 기반으로 진행해보겠다.


우선 아파치 서버 페이지를 수정하겠다. 기본은 it works 화면임

(vi /var/www/index.html 수정하면됨)

아파치 서버가 실행이 되지 않았을 수도 있기 때문에 실행하자

#service apache2 restart

아래의 화면은 kali 공격자의 index.html 페이지이다.

1. arpspoof   

#arpspoof -t <target ip> <gateway ip>

#arpspoof -t 192.168.100.5 192.168.100.1

1번 쉘을 열고 위의 명령어 실행


2. IP forwarding

#echo 1 > /proc/sys/net/ipv4/ip_forward

#fragrouter -B1

2번 쉘을 열고 위의 명령어 실행


3. fake host file 작성

#vi test

[attacker IP]       [Domain]

192.168.100.14    *.naver.com

vi 편집기 내용


4. dnsspoof

#dnsspoof -f <filename>

#dnsspoof -f test

3번 쉘을 열고 위의 명령 실행


5. target pc에서 naver.com 접속

아래의 화면과 같이 naver.com에 접속하였음에도 불구하고 공격자의 index.html에 접속하는 것을 확인할 수 있다.

사이트를 진짜 사이트처럼 복제한 후 악용할 수 있다.


'해킹 > 해킹' 카테고리의 다른 글

DoS(Denial of Service) 소개 및 공격유형  (0) 2016.02.12
스푸핑 (Spoofing) 소개  (0) 2016.02.11
스니핑 도구 tcpdump 소개  (0) 2016.02.02
스니핑(sniffing) 소개  (0) 2016.02.02
shodan 소개  (0) 2016.02.01

TCP Dump

- 가장 일반적으로 사용하는 스니핑 도구로 불법적인 느낌, 해킹이라는 느낌보다는 관리자적인 느낌이 강한 도구이다.

처음부터 스니핑을 위한 도구로 개발된 것이 아니라 네트워크 관리를 위해 개발된 툴이며 Snort라는 IDS의 기반 프로그램이기도 하다.


man page에서 Tcpdump의 정의를 잠깐 살펴보고자 한다.

Tcpdump prints out a description of the contents of packets on a network interface that match the boolean expression; the description is preceded by a time stamp, printed, by default, as hours, minutes, seconds, and fractions of a second since midnight. It can also be run with the -w flag, which causes it to save the packet data to a file for later analysis, and/or with the -r flag, which causes it to read from a saved packet file rather than to read packets from a network interface. It can also be run with the -V flag, which causes it to read a list of saved packet files. In all cases, only packets that match expression will be processed by tcpdump.


뭐 내용을 잠깐 보면 Tcpdump는 boolean 표현식을 만족하는 네트워크 인터페이스의 패킷의 내용을 출력하고 파일로 저장하는 w플래그나 저장된 패킷으로부터 읽어들이는 r플래그 등이 존재한다는 것을 확인할 수 있다.


설치

Tcpdump는 libpcap 라이브러리를 사용하는데 칼리에서는 기본적으로 tcpdump가 설치되어 있고, 리눅스의 경우

apt-get install tcpdump, apt-get install libpcap 으로 필요 라이브러리를 설치하면 되는데 자세한 설치 방법은 칼리를 사용할 것이기 때문에 제외하도록 한다.


옵션(자주 쓰이는 것만 나열 (자세한 것은 man page 참고)


예제

To print all packets arriving at or departing from sundown:

-> tcpdump host sundown        

 //sundown host의 출발 도착 패킷 출력


To print traffic between helios and either hot or ace:

    -> tcpdump host helios and \( hot or ace \)    

//helios와 hot, ace에서 발생하는 패킷 출력


To print all IP packets between ace and any host except helios:

    -> tcpdump ip host ace and not helios        

//helios를 제외한 ace와 다른 host간 ip 패킷 출력


To print all traffic between local hosts and hosts at Berkeley:

     -> tcpdump net ucb-ether       

//local host와 berkeley host사이에서 발생하는 모든 트래픽 출력


To print all ftp traffic through internet gateway snup: (note that the expression is quoted to prevent the shell from (mis-)interpreting the parentheses):

    -> tcpdump 'gateway snup and (port ftp or ftp-data)'    

//gateway snup을 통한 모든 ftp 패킷 출력


To print IP packets longer than 576 bytes sent through gateway snup:

    -> tcpdump 'gateway snup and ip[2:2] > 576'    

//snup을 통과하는 패킷 중 576byte 이상 패킷 출력



'해킹 > 해킹' 카테고리의 다른 글

스푸핑 (Spoofing) 소개  (0) 2016.02.11
스니핑 도구 dsniff 소개  (0) 2016.02.02
스니핑(sniffing) 소개  (0) 2016.02.02
shodan 소개  (0) 2016.02.01
해킹의 두번째걸음. 스캐닝(scanning)  (0) 2016.01.28

- 스니핑 정의

-> 'sniff'는 사전에서 찾아보면 '코를 킁킁거리다'라는 의미를 가진다. 코를 킁킁거리듯이 정보를 데이터 속에서 찾는 것이라고 생각하면 된다.

-> 스니핑 공격은 막는 것도 어려우며, 탐지 역시 쉽지 않다. 스니핑 공격을 수동적 공격이라고도 말하는데, 그 이유는 공격 시 툴을 설치해놓은 상태로 충분하기 때문이다.

-> 랜에서의 스니핑은 promiscuous 모드에서 작동한다. 랜 카드는 설정된 IP 주소값과 고유한 MAC(Media Access Control) 주소 값을 가지고 있으며 자신의 랜카드에 들어오는 프로토콜 형식에 따른 전기적 신호의 헤더부분, 즉 주소 값을 인식하고 자신의 버퍼에 저장할지를 결정한다. 그러나 스니핑은 자신이 가지지 말아야 할 정보까지 모두 받아들이는 것이다. 이렇듯 자신의 주소값을 무시하고 모든 패킷을 받아들이는 상태를 promiscuous 모드라고 한다.


그림출처: 안랩


- 인터페이스를 promiscuous 모드로 전환하기

$sudo ifconfig eth0 promisc

<전환 전>


<전환 후>


- 인터페이스를 원복시키기

$sudo ifconfig eth0 -promisc

<원복>


관련 Tools


1. TCP Dump

http://kkn1220.tistory.com/70 참고

2. Dsniff

http://kkn1220.tistory.com/72 참고




'해킹 > 해킹' 카테고리의 다른 글

스니핑 도구 dsniff 소개  (0) 2016.02.02
스니핑 도구 tcpdump 소개  (0) 2016.02.02
shodan 소개  (0) 2016.02.01
해킹의 두번째걸음. 스캐닝(scanning)  (0) 2016.01.28
maltego(footprinting tool) 소개  (0) 2016.01.28

+ Recent posts