[Penetration test][Python] Data leakage using ICMP tunneling 2

silver35·2022년 7월 23일
0

Penetration test

목록 보기
2/2

ICMP 터널링을 이용한 데이터 유출 테스트

테스트는 내부망(172.30.1.45) -> 내부망(172.30.1.49)로 데이터를 유출하는 것이다. 유출할 데이터는 rebound-master.zip으로 파일로 컴파일러 오류를 처리하는 파이썬 오픈소스를 다운받았다.

참고자료) https://github.com/shobrook/rebound

테스트 진행

[ client : 172.30.1.45 ]

step 1. 유출할 rebound-master.zip 파일 내용 확인한다.

step 2. ping을 이용해 172.30.1.59에 데이터를 8000byte씩 나눠서 전달하는 client.py를 실행한다.

step 3. 전송이 완료되면 아래와 같이 전송시간이 나타난다. rebound-master.zip의 데이터 크기는 2.4MB로 전송하는데 13분이 걸렸다.

[ server : 172.30.1.45 ]

step 4. 와이어샤크를 실행시켜 client(172.30.1.45)에서 icmp 프로토콜로 전달온 패킷을 확인한다.

step 5. 패킷 전달이 완료되면 JSON 형식으로 패킷을 저장한다.

step 6. 추출한 JSON에서 Data를 복원하려 했지만 185번 패킷이 유실됨을 확인하였다.

[ client : 172.30.1.45 ]

step 7. 185번 패킷만 보내는 client_loss.py를 실행한다.

[ server : 172.30.1.45 ]

step 8. server(172.30.1.45)에서 확인해보면 sequence가 185번인 패킷만 전달됨을 확인하였다. 이 패킷도 JSON 파일로 추출한다.

step 9. 185.json 파일을 확인해 보면 아래와 같은 형식으로 되어있다. 이를 packet_172.30.1.49.json 파일에서 icmp.seq_le:184번 뒤에 185.json 파일 내용을 합쳐주면 된다.

step10. 전달받은 데이터를 다시 복원을 완료하였다.

step 11. decryption_172.30.1.49.zip 파일로 저장이 완료 되었다.

step 12. zip 파일 압축을 풀면 client에서 유출할 데이터 파일과 내용이 같다는 것을 확인하였다.

테스트를 마치며

처음에는 데이터를 보내는것에 초점을 맞춰 데이터 전송 속도나 패킷의 유실을 생각하지 못했다. 그러나 몇번의 테스트를 거쳐서 속도가 너무 느리다는 점과 패킷이 유실된다는 점을 깨달았고, 이를 보완하는 과정을 거쳐 지금의 소스코드를 구현한 점이 뿌듯하였다.

0개의 댓글