9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

寄生虫のようなマルウェアについて

Last updated at Posted at 2020-12-01

注意:この記事は「KOSENセキュリティーコンテスト2020」で出された「寄生虫のようなマルウェア」について調べて、再び解いてみたという記事です。予めご了承ください

初めに

この記事は、そこで出された「寄生虫のようなマルウェア」という問題を解く鍵となったHelminthというマルウェアについて、調べて再び解いてみました。なぜ、再びなのかというと、DNSクエリは取り出したのですが、デコード時にチームメイトとエスパーでFLAGを通してしまったからです。(私のKOSENセキュコンのwriteupはこちら)

また間違い等ありましたら、教えていただければ幸いです。

寄生虫のようなマルウェア

問題の内容は次のようです。

kiseichu.png

helminthpcapng.jpg

Helminthは、マルウェアでよく使われるTXTレコードではなくAレコードを使うようです。(詳しくは参考文献の方を参照していただければと思います。)

HelminthAレコードの制約で、載せられる情報は8bitまでなので、それに収めるためにASCIIコード(7bit)が用いられていて、ドメイン名に載せる情報の表現がASCIIコードになってるみたいです。

通信内容を取り出す

まずtsharkを使って、127.0.0.1のDNSクエリを取り出します。

127001DNS.jpg

パケットの中身を見るとs.comの通信で行われていることがわかるので、次のように実行します。(参考文献にある記事よりインスパイアさせていただきました。)

tshark -r helminth.pcapng -T fields -e dns.resp.name | grep s.com | awk -F . '{print $1}'

これを実行すると、余計なものも出てくるのでそれは削除します。

取り出した後
00L01000JQ30D0A433A5C55736572735C7368753E747970652022433A5C
00L01001YRE50726F6772616D2046696C65735C526F6F6B69655C435446
00L01002QSF5C464C41472E74787422200D0A464C41477B48656C6D696E
00L010034YQ74685F6E69686F6E676F5F64655F6B697365696368755F72
00L01004K33617369796F21777777777D0D0A

通信の詳細

次に通信は以下の形式になるようなのでDATAの部分だけ取り出します。

00[botid][cmdid][partid][(random)][DATA].domain

cmdid ← 実行コマンド応答時の cmdid
partid ← 実行結果を分割したときの通し番号(001,00Aとか)
DATA ← 実行結果(ASCIIコード 16進数表現)

first-address.jpg

botidはASCIIコードの10進数表現をIPアドレスとして埋め込んでいるようなので、最初のIPアドレスが76.0.0.0なのでLです。
また、randomの部分の文字数は3文字のようなので、それも取り除きます。

最終の文字列
0D0A433A5C55736572735C7368753E747970652022433A5C
50726F6772616D2046696C65735C526F6F6B69655C435446
5C464C41472E74787422200D0A464C41477B48656C6D696E
74685F6E69686F6E676F5F64655F6B697365696368755F72
617369796F21777777777D0D0A

この文字列をcyberchiefに突っ込んでASCIIコードなので16進数でデコードします。
cyberchief.jpg

FLAGはFLAG{Helminth_nihongo_de_kiseichu_rasiyo!wwww}でした。

手順

ダラダラ書いてしまい、手順がわかりにくいかもしれないので、ここまでの手順をまとめます。

  • DNSクエリを取り出す。
  • 00[botid][cmdid][partid][(random)][DATA].domainの形式に従って、DATAの部分を取り出す
  • botidは、一番最初のサーバーからの返答で判断し、randomの部分は3文字であるので削除する。
  • 上記の手順を踏んだら、任意の方法でデコードする

最後に

私にとって、マルウェアの通信を解析するのが初めてでした。
その中で、しっかりどういう形で送信されているのか、特徴を知った上で改めてFLAGを得ることが出来てよかったです。

参考文献

[1] 標的型攻撃で使われたマルウェアを解析して C2 サーバを作った。そのマルウェアは DNSトンネリングを行う珍しいものだった。
[2] Google CTFとTrendmicro CTF - 生産性のない話

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?