본문 바로가기
Python

Python을 이용한 Land_Attack 구현하기.

by 웹하는빡통 2020. 7. 8.

Land_Attack이란: IP 스푸핑 공격을 변형한 기법으로 출발지 IP주소를 목적지 IP 주소와 동일하게 설정하여

ICMP 요청 패킷 등을 공격 대상자에게 전송한다. 공격 대상자는 ICMP 응답 패킷을 전송하기 위해 출발지 

IP 주소를 참조하는데, 이 경우 목적지 IP 주소와 동일하기 때문에 ICMP 응답 패킷을 자기 자신에게 보낸다.  그리하여  IP 프로토콜 스택에 심각한 장애를 유발시킨다. 

공격원리

1. 출발지와 목적지가 같은 패킷을 공격 대상에 보내면 시스템은 공격자가 처음 보낸 SYN 패킷의 출발지 주소 값을 참조하여 응답 패킷의 목적지 주소를 SYN 패킷의 출발지 주소로 설정해서 보내게 된다.
2. 패킷은 네트워크 밖으로 나가지 않고 자신에게 돌아온다. 
3. 돌아온 패킷의 출발지 IP 주소에는 또 다시 자신의 IP주소가 기록된다. 
.
Land 공격이 실행되면 출발지 주소와 목적지 주소가 희생자 IP주소로 설정되며 희생자는
답신을 자기 자신에게 계속 보내게 된다. 해당 패킷은 무한루프에 빠지게 된다.

 

소스 코드.

동작은 생각보다 단순하다 scapy 모듈을 호출해 TCP/IP 연결을 생성하고 출발지 주소와 목적지 주소를 희생자 IP로 설정 해주고 send() 함수를 이용해 패킷을 100회 전송해 준다. 

 

실행 결과. 

실행 결과 출발지 IP 주소/출발지 포트 번호가 목적지 IP 주소/목적지 포트 번호와 동일하다. 공격자가 공격자 자신에게 SYN 패킷을 주고 있음을 알 수 있다.  와이어샤크로 패킷을 확인해 보자 그 결과 출발지 와 목적지 주소가 동일하다는 것을 알 수 있다. 

 

댓글