#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

+ Recent posts