Server/보안

Kali Linux - ARP Spoofing 공격 (Ettercp 이용)

heyoon2j 2019. 7. 28. 19:04

■ ARP Spoofing 공격

- MITM : Man In The Middle Attack의 일종 / 중간자 공격, 중간에 끼어드는 것을 말한다.

- Attacker는 정상적인 ARP Table을 가지고 있고, 양쪽에서 올 때 중간에서 가로채서 잘못된 MAC을 보낸다. ARP는 주는 데로 받기 때문에(검증 구조가 없어서) 취약하다 

 

* 해결 방법

1) Static ARP Table 설정

2) Port Security: 특정 Port에 대해서 허용할 MAC Address 지정 및 개수를 제한하는 방법 (Switch)

3) SSL 사용

 

 

[ 과 정 ]

-----------------------------------------------------------------------------------------------------------------------------------

ㆍAttacker는 정상적인 ARP Table을 가지고 있고, 양쪽에서 올 때 중간에서 가로채서 잘 못 된 MAC을 보낸다.

 

- ettercap -G: ettercap 실행

 

- Sniff -> Unified sniffing... 클릭

 

- Network interface 선택, eth0

- 위와 같이 출력되면 정상적으로 나온 것이다.

 

- 에러가 나는 경우, echo 0 > /proc/sys/net/ipv6/conf/eth0/use_tempaddr 입력

 

- Hosts -> Scan for hosts 클릭, 공격할 Host를 Scan 한다.

- 위의 오른쪽 그림처럼 Scanning에 대한 결과가 나오는 것을 확인할 수 있다.

 

- Hosts -> Hosts list 클릭

- 위와 같이 List가 나온다.

 

- 공격할 IP 선택 -> Add to Target 1 클릭

- 위와 같이 Target 1로 설정된 것을 확인할 수 있다.

 

공격할 다른 IP 선택 -> Add to Target 2 클릭

- 위와 같이 Target 2로 설정된 것을 확인할 수 있다.

 

- Mitm -> ARP poisoning... 클릭

=> Mitm: 중간자 공격, 네트워크 통신을 조작하여 통신 내용을 도청하거나 조작하는 공격 기법

=> ARP poisoning: 양쪽의 MAC 주소를 자신의 MAC 주소로 조작하여 중간에서 도청한다.

 

- Sniff remote connections 체크

 

- 위와 같이 MAC Table을 확인하게 되면, 1.0.0.11, 1.0.0.101이 같은 것을 확인할 수 있다(1.0.0.250은 Attacker)

 

- 1.0.0.101 Host PC에서 1.0.0.11 접속

 

- wireshark에서 “http&&ip.addr==192.168.1.103&&ip.addr==192.168.1.132”를 입력하면 해당 명령으로 필터링돼서 나온다.

 

- 정보를 확인하려면 Follow -> TCP Stream 클릭

- Wireshark에서 1.0.0.11과 1.0.0.101 간의 TCP Stream을 보게 되면 모든 내용을 확인할 수 있게 된다.

 

- data 포맷을 Raw로 바꿔서 저장한다.

- MTU(1500byte) = IP Header(20byte) + TCP Header(20byte) + MSS(1460byte) [1]

=> MTU: Maximum Transmission Unit, Frame에서 Header 부분을 제외한 Data부분의 크기

=> MSS: Maximum Segment Size, TCP에서 한 번에 전송할 수 있는 Segment의 최대 크기

 

- 빨간색 선 까지가 Header 부분이고 .PNG부터 Body 부분이다. 위와 같이 Header와 Body의 구분을 Enter(CR+LF) 2번 이후를 body로 인식한다. CR+LF(0D 0A) 2번을 하지 않으면 아니면 전부 Header로 인식하기 때문에 공격의 대상이 된다.

 

- 저장한 파일을 HxD에서 열어준다.

- 중간을 보게되면 ....%PGN 라는 부분이 있는데, ....(0D 0A 0D 0A)은 Header와 Body를 나누기 위한 CR+LF(Enter) 2번을 의미하고, %PNG(89 50 4E 47 0D...)는 PNG의 Signature로 해당 부분부터 PNG 파일이라는 의미이다.

 

- 89 50부터 아래까지 복사하여 새로운 파일에 복사를 한 뒤, PNG 파일로 저장

 

- 위와 같이 PNG 파일을 확인할 수 있다.

- 이런 식으로 파일의 내용 확인 및 복구가 가능하기 때문에  방지를 해야 된다.

 

 

 

* 출처

[1] https://nenunena.tistory.com/60