#About
L_01
Q : 지성이는 홈쇼핑을 하다 이상한 페이지에 접속하여 악성코드에 감염되었다! 악성 스크립트에 포함되어 있는 쉘코드를 다운로드 하는 URL을 찾아라!
Q : J.S Park was surfing a home shopping site and got infected by malware code! Find out the URL that the shellcode(contained in the malware script) attempts to download content from.
# -*- coding:utf-8 -*-
import socket
import dpkt
def extract(pcap):
for ts,buf in pcap:
try:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
src = socket.inet_ntoa(ip.src)
dst = socket.inet_ntoa(ip.dst)
# http_req = dpkt.http.Request(tcp.data)
# if http_req.uri.find('<script>') >=0:
# print http_req.uri
if buf.find("<script>") != -1:
print "[+] 출발지 : "+src+"도착지 : "+dst
print buf
# print buf[buf.find("<script>"):buf.find("</script>")+1],
except:
pass
def main():
p = open('C:/2011_HTP_PreQual_PROB.pcap','rb')
pcap = dpkt.pcap.Reader(p)
extract(pcap)
if __name__=='__main__':
main()
주어진 문제에서 키워드는 악성 스크립트이기에 find 명령을 이용하여 <script>로 시작하는 값이 있으면 출력하도록 만든 것이며
주석의 내용은 임의로 작성해본 코드라 이 코드를 보고 있는 분께서는 생각안하셔도 되는 부분임.
[그림 1] - 악성 스크립트로 추정되는 스크립트 확인
출력결과를 확인하다 보면 <script>가 아닌 <SCRIPT>로 시작하여 의심을 사기에 충분한 스크립트가 확인되며
자세한 결과를 확인하기 위해 출발지와 도착지 아이피를 기준으로 아래와 같이 패킷을 확인해보았다
[그림 2] - 필터링을 통한 패킷 확인
패킷 번호 6568번에서 [그림 1]에서 찾았던 페이로드를 확인할 수 있었으며 TCP stream을 통해 아래와 같이 페이로드를 확인할 수 있었다
[그림 3] - 페이로드 확인
페이로드가 유니코드로 되어 있음을 확인 후 온라인 컨버팅을 제공하는 사이트에서 hex 값을 아래와 같이 추출해 낼 수 있었다
[그림 3] - 헥스 값 확인
.... 나중에 이어 씀
'Wargame' 카테고리의 다른 글
2013 [Hack The Packet] L_01 (0) | 2018.03.21 |
---|---|
2011 [Hack The Packet] L_03 (0) | 2018.03.21 |
[FEDORA CORE 4] Dark_stone > Cruel (0) | 2017.12.29 |
[MEMORY] 2012 Nuit Du hack > Password Manager 2 (0) | 2017.12.28 |
[MEMORY] 2012 Nuit Du Hack > Password Manager 1 (0) | 2017.12.28 |