최근 CVE-2011-2110 취약점을 이용하여 악성코드를 유포하는 내용을 살펴보면 악성코드를 다운로드 받는 URL이 이전과는 조금 다르게 암호화 되어 있다.
XOR은 기본이며, XOR 후 zlib으로 압축되어 있는데 해당 URL을 찾기 편하게 간단하게 스크립트로 짜보았다.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import zlib, operator, sys, os
# info 변수 인자값에서 URL XOR zlib 키 찾는 함수
def findkey(info):
for count in range(256):
data = ''
for x in range(0, len(info), 2):
data += chr(operator.xor(int(info[x:x+2], 16), count))
if ord(data[0]) == 0x78:
if ord(data[1]) == 0x01 or ord(data[1]) == 0x5e or ord(data[1]) == 0x9c or ord(data[1]) == 0xda:
return '[+] Malware URL : ' + zlib.decompress(data)
return None
# 메인 함수
def main():
if len(sys.argv) != 2:
print 'Usage:' + sys.argv[0] + ' value'
sys.exit()
url = findkey(sys.argv[1])
if url == None:
print '[-] Not found url key'
sys.exit()
else:
print url
if __name__ == "__main__":
print '[+] Start'
main()
print '[+] End'
사용은 아래와 같이 가능하다.
D:\Python Programming\Python Code\Malware\Script Analysis>whatzlib.py "02e6b1525353caa8ad4d4daa49ccaec9ceae494e4aa85534a851d3527b7a1b6b7d37"
[+] Start
[+] Malware URL : http://70.39.99.102/sb.txt
[+] End
D:\Python Programming\Python Code\Malware\Script Analysis>wget http://70.39.99.102/sb.txt
--2011-06-18 05:45:03-- http://70.39.99.102/sb.txt
Connecting to 70.39.99.102:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 63953 (62K) [text/plain]
Saving to: `sb.txt'
100%[========================================================================================>] 63,953 --.-K/s in 0s
2011-06-18 05:45:04 (123 MB/s) - `sb.txt' saved [63953/63953]
D:\Python Programming\Python Code\Malware\Script Analysis>file sb.txt
sb.txt: data
D:\Python Programming\Python Code\Malware\Script Analysis>xor.py sb.txt
ByJJoon XOR Decoder!
[+] Start
[-] Not found XOR key
[+] Find zlib XOR key : 0x7A
[+] End
D:\Python Programming\Python Code\Malware\Script Analysis>file sb.txt_zlib
sb.txt_zlib: PE32 executable (GUI) Intel 80386, for MS Windows, Nullsoft Installer self-extracting archive
위 내용들은 모두 왼쪽 XOR DECODER 메뉴에서 사용이 가능하다.
끝으로 자세한 내용은 http://redhidden.tistory.com/36 페이지를 참고하시면 많은 도움이 될거 같다.