35C3 CTF 2018 COREBOT

CTF/Writeup 2019. 2. 26. 01:36

Windows 리버싱이다. 헥스레이로 코드를 보면 전체 코드자체는 간단하다.



전체 로직을 대충 설명해보면 Windows의 CryptoApi로 암호화된 값을 복호화 하고 이 때 사용하는 키를 로컬 PC의 볼륨 시리얼 값을 통해 생성한다.


암호화된 값은 sub_1261146 함수에서 특정 리소스 값을 통해 가져오는걸 사용해 주면 된다. 키 값과 같은 경우 실제 문제 서버의 시리얼 값을 알 수 없지만 실제 시리얼을 구해오는 걸 보면 2바이트 값이기 때문에 위 키 값 생성로직을 그대로 사용해서 brute  forcing이 가능하다.


CryptoApi와 같은 경우 해당 문제를 통해 처음 봤는데 구글링하면서 각 함수의 인자들이 어떤 의미인지 검색해가면서 확인했다. 이 부분에서 생각보다 애를 먹었는데 분석 결과 AES 암호화에 ECB 블록운용 방식을 사용하고 있었다.


위 코드에서 복호화된 값의 첫4바이트가 35C3인지 확인하고있기 때문에 이에 맞춰서 brute force해주는 python 코드를 짜서 돌려줬다.


from Crypto.Cipher import AES

def decrypt_AES_ecb(ciphertext,key):
cipher = AES.new(key,AES.MODE_ECB)
plaintext = cipher.decrypt(ciphertext)
return plaintext

resource = "1029B8459D2AAB93FE89FB829342A18C2E90630006118064B821C29F35E77EF2".decode("hex")


for serial in range(0x0,0xffff+1):
key = ""
for i in range(0,16):
key = chr((serial& 0xFF)) + chr((serial&0xff00)>>8) + key
serial ^= ((serial & 0xFFFF) >> 4) ^ ((serial & 0xFFFF) << 11) ^ ((serial & 0xFFFF) << 7)
flag = decrypt_AES_ecb(resource,key)
if "35c3" in flag.lower():
print "Find Flag[*] = "+flag


Find Flag[*] = 35C3_MalwareAuthorKryptoChef











'CTF > Writeup' 카테고리의 다른 글

SSCTF 2016 : Re1  (0) 2019.03.13
Sharif University CTF 2016 : Serial  (0) 2019.03.11
Evlz CTF 2019 Smol-Big  (0) 2019.02.20
Codegate CTF 2019 KingMaker  (0) 2019.02.16
Trust CTF 2019 Web Writeup  (0) 2019.02.16
블로그 이미지

JeonYoungSin

메모 기록용 공간

,