EKOPARTY CTF 2020 Writeup

この大会は2020/9/25 2:00(JST)~2020/9/27 8:00(JST)に開催されました。
今回もチームで参戦。結果は2450点で387チーム中124位でした。
自分で解けた問題をWriteupとして書いておきます。

Discord (Misc)

Discordに入り、#ctf-mainチャネルのトピックをコピペする。

En los ultimos anos el equipo de NULL Life ha trabajado junto a la Ekoparty para proveer el Capture The Flag principal, logrando interconectar actividades y otros sectores de la conferencia para darle un trasfondo interesante.

Este ano no sera diferente, solo que nos encontraremos en la virtualidad. Ademas, contamos con el apoyo de GitHub Security Lab como sponsor.

Bienvenidos! https://ctf.ekoparty.org/
EKO{flag-format}
EKO{flag-format}

Wet (Misc)

Aztecコードがゆがんでいる画像が添付されている。歪みを直し、https://zxing.org/w/decode.jspxでデコードする。

EKO{tirate_un_flag}

Exe (Entry)

添付のマルウェアファイルのsha256を答える問題。

$ sha256sum exe
eba35b2cd54bad60825f70fb121e324d559e7d9923b3a3583bb27dfd7e988d0c  exe
EKO{EBA35B2CD54BAD60825F70FB121E324D559E7D9923B3A3583BB27DFD7E988D0C}

ABCD (Entry)

添付のマルウェアの名称を答える問題。バイナリを見ていると、RyukReadMe.txtなどの文字が入っている。

EKO{ryuk}

Run (Entry)

添付のマルウェアを検知しないアンチウイルス製品を答える問題。VirusTotalにあげると、4つ検出できなかったアンチウイルスソフトがあり、その中の一つがフラグだった。

EKO{Webroot}

Clop (Entry)

マルウェアのパスワード付きZIPが添付されている。パスワード"infected"で解凍する。バイナリの末尾にフラグが入っていた。

EKO{1nf3ct3d}

Cert (Entry)

添付ののマルウェアサンプルは中国の会社によって署名されているので、その会社の名前を答える問題。

$ osslsigncode verify cert
Current PE checksum   : 00000000
Calculated PE checksum: 0008908D

Message digest algorithm  : SHA1
Current message digest    : C78EF2F4F4F7B310B546B0F2F81DD3B87CC18A10
Calculated message digest : 185FB6D5A8654A3F7C77FDD720948CBD493C1C96    MISMATCH!!!

Signature verification: ok

Number of signers: 1
	Signer #0:
		Subject: /C=CN/ST=Beijing/L=Beijing/O=Beijing Qihu Technology Co., Ltd./OU=\xE7\xA0\x94\xE5\x8F\x91\xE9\x83\xA8/CN=Beijing Qihu Technology Co., Ltd.
		Issuer : /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Code Signing 2010 CA

Number of certificates: 5
	Cert #0:
		Subject: /C=US/O=Symantec Corporation/CN=Symantec Time Stamping Services CA - G2
		Issuer : /C=ZA/ST=Western Cape/L=Durbanville/O=Thawte/OU=Thawte Certification/CN=Thawte Timestamping CA
	Cert #1:
		Subject: /C=US/O=Symantec Corporation/CN=Symantec Time Stamping Services Signer - G4
		Issuer : /C=US/O=Symantec Corporation/CN=Symantec Time Stamping Services CA - G2
	Cert #2:
		Subject: /C=CN/ST=Beijing/L=Beijing/O=Beijing Qihu Technology Co., Ltd./OU=\xE7\xA0\x94\xE5\x8F\x91\xE9\x83\xA8/CN=Beijing Qihu Technology Co., Ltd.
		Issuer : /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Code Signing 2010 CA
	Cert #3:
		Subject: /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
		Issuer : /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Code Verification Root
	Cert #4:
		Subject: /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Code Signing 2010 CA
		Issuer : /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5

Message digest algorithm  : SHA256
Current message digest    : 7A1893B4095CF5A2762C0E6BDEFFD4809C2FB8A0D69406BE2CFF16E04AF8B05D
Calculated message digest : B7439CED8CF39D5B48D782408CA624BD81B7F913C16E551352C277889D912966    MISMATCH!!!

Signature verification: ok

Number of signers: 1
	Signer #0:
		Subject: /C=CN/ST=Beijing/L=Beijing/O=Beijing Qihu Technology Co., Ltd./OU=\xE7\xA0\x94\xE5\x8F\x91\xE9\x83\xA8/CN=Beijing Qihu Technology Co., Ltd.
		Issuer : /C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 SHA256 Code Signing CA

Number of certificates: 3
	Cert #0:
		Subject: /C=CN/ST=Beijing/L=Beijing/O=Beijing Qihu Technology Co., Ltd./OU=\xE7\xA0\x94\xE5\x8F\x91\xE9\x83\xA8/CN=Beijing Qihu Technology Co., Ltd.
		Issuer : /C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 SHA256 Code Signing CA
	Cert #1:
		Subject: /C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 SHA256 Code Signing CA
		Issuer : /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
	Cert #2:
		Subject: /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
		Issuer : /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Code Verification Root

Failed

エラーが発生しているが、署名した会社はわかる。

EKO{Beijing Qihu Technology Co., Ltd.}

Deep (Trivia)

添付のマルウェアサンプルのssdeepを答える問題。

$ ssdeep deep
ssdeep,1.1--blocksize:hash:hash,filename
1536:KCnGt1AnxGhRoE0JLEaolArglgidmpHACgaSz42tpAonFcP+i+9l:jG1hRoE0JLE8Qjg6aSk0LE+9l,"/mnt/hgfs/Shared/deep"
EKO{1536:KCnGt1AnxGhRoE0JLEaolArglgidmpHACgaSz42tpAonFcP+i+9l:jG1hRoE0JLE8Qjg6aSk0LE+9l}

Obaphx (Trivia)

添付のマルウェアサンプルが使っているMITREのテクニックを答える問題。バイナリに含まれている文字列「Stack corruption typically occurs when either the wrong calling convention is used or when the function is called with the wrong number of arguments.」で検索してみると、以下のページが見つかった。

https://otx.alienvault.com/indicator/file/b3b2bdf018131644a317293043b2928b26bdd633

MITREのテクニックを確認すると、その中の一つがフラグだった。

EKO{hooking}

C&C1 (C&C)

pcapのパケットを見て、C&CのIPアドレスを答える問題。突如外部のIPアドレスからアクセスがあっただけで答えたら、合っていた。

EKO{54.204.19.83}

COVID19 (Crypto)

添付のコードを整形する。

WScript.Sleep 3000
Dim str 
Dim str2
str = ")46) )75) ... "
str2 = Replace(str,")","")

Function h2s(h)
    Dim a : a = Split(h)
    Dim i
    For i = 0 To UBound(a)
        a(i) = Chr("&H" & a(i))
    Next
    h2s = Join(a, "")
End Function

Dim De
De = h2s(str2)
Execute De

strの並んでいる数値を16進数ASCIIコードとしてデコードする

with open('covid', 'r') as f:
    lines = f.readlines()

codes = lines[3][7:-2].replace(')', '').split(' ')[:-1]
msg = ''
for code in codes:
    msg += chr(int(code, 16))
print msg

実行結果は以下の通り。

Function n(s,c):n=String(s,c):End Function:t=t&"4D5A90000300000004000000.......

EKO{super_infected}set startshe = wscript.createobject("wscript.shell")

set sysOb = createobject("scripting.filesystemobject")

startup = startshe.specialfolders ("startup") & "\Chrome.vbs"

sysOb.copyfile wscript.scriptfullname,startup ,true

WScript.Sleep  1000

この復号結果にフラグが混ざっていた。

EKO{super_infected}

Final (Misc)

アンケートに答えたら、フラグが表示された。

EKO{s33_y0u_in_2021}