ばぁど・うぉっちんぐ

セキュリティを頑張りたいプログラマ。自由と春を求めて羽ばたく渡り鳥。

ばぁどのハニーポット観察日誌 - Cowrie で取得したファイルを調べてみるの巻 -

ハニーポッター見習いのばぁどです。

現在、T-Potを構築して日々攻撃を観測しています。

今回はハニーポットの一つであるCowrie でダウンロードされたファイルについて調べようと思います。

Cowrie

ハニーポットの一つです。

github.com

以前の記事で軽く紹介もしました。

ultrabirdtech.hatenablog.com

Cowrie は配置された攻撃ファイルの収集機能もあります。 今回は、その収集したファイルについて、今できる限りの知識で調べて行こうと思います。

どこに保存されているか

ファイルパス

T-Potで構築されたCowrieは下記ファイルパスに検知したマルウェアを隔離しています。

/data/cowrie

ls の結果

ls -la
total 8140
drwxrw----  6 tpot tpot    4096 Oct  3 03:29 .
drwxrw---- 18 tpot tpot    4096 Sep 22 19:41 ..
drwxrw----  2 tpot tpot    4096 Oct  3 09:31 downloads
-rwxrw----  1 tpot tpot       0 Oct  3 03:29 downloads.tgz
-rwxrw----  1 tpot tpot  287196 Oct  3 03:28 downloads.tgz.1.gz
-rwxrw----  1 tpot tpot  570999 Oct  2 03:28 downloads.tgz.2.gz
-rwxrw----  1 tpot tpot  286921 Oct  1 03:27 downloads.tgz.3.gz
-rwxrw----  1 tpot tpot  569966 Sep 30 03:28 downloads.tgz.4.gz
-rwxrw----  1 tpot tpot  285260 Sep 29 03:28 downloads.tgz.5.gz
-rwxrw----  1 tpot tpot  285039 Sep 28 03:28 downloads.tgz.6.gz
-rwxrw----  1 tpot tpot 5428921 Sep 27 03:28 downloads.tgz.7.gz
-rwxrw----  1 tpot tpot  285271 Sep 26 03:28 downloads.tgz.8.gz
-rwxrw----  1 tpot tpot  287467 Sep 25 03:28 downloads.tgz.9.gz
drwxrw----  2 tpot tpot    4096 Sep 22 19:41 keys
drwxrw----  3 tpot tpot    4096 Oct  3 09:06 log
drwxrw----  2 tpot tpot    4096 Sep 22 19:40 misc

一日置きに圧縮もしてくれています。 ログの保存期間はymlで設定可能であり、現在15日?くらいで設定したるはず!!

2018年10月03日に検出されたマルウェア

$ cd downloads

$ ls -la
total 624
drwxrw---- 2 tpot tpot    4096 Oct  3 09:31 .
drwxrw---- 6 tpot tpot    4096 Oct  3 03:29 ..
-rw-r--r-- 1 tpot 65533      1 Oct  3 09:28 6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d
-rw------- 1 tpot 65533 625867 Oct  3 06:11 tmpxP3FoH

朝の9:00の時点で二つのマルウェアを検知しています。 今回は、容量も多いtmpxP3FoHを調査!

マルウェア調査

置かれたマルウェアの調査です。

fileコマンド

fileコマンドでファイルの種類を調べます。 fileコマンドを利用することで、ファイルがバイナリかテキスト形式なのかを調査できる。

例) htmlファイルにfileコマンドしてみたときの結果

$ file index.html 
index.html: HTML document text, UTF-8 Unicode text

file コマンドの結果

file tmpxP3FoH 
tmpxP3FoH: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped

ELFファイルですね。 ELFは「Executable and Linking Format」の略。 バイナリファイルです。

readelf コマンドの結果

次に、readelfコマンド。 readelf コマンドを使うことで、ELF形式のバイナリのヘッダ情報を知ることができます。

$ readelf -h tmpxP3FoH 
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0x8048110
  Start of program headers:          52 (bytes into file)
  Start of section headers:          553480 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         5
  Size of section headers:           40 (bytes)
  Number of section headers:         28
  Section header string table index: 25

strings コマンドの結果

最後にstringsコマンドでファイルの中身を探ってみます。

viなどで開くとバイナリなので読めません。

↓一部抜粋

^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@^P<81>^D^H4^@^@^@^Hr^H^@^@^@^@^@4^@ ^@^E^@(^@^\^@^Y^@^A^@^@^@^@^@^@^@^@<80>^D^H^@<80>^D^H^Ka^H^@^Ka^H^@^E^@^@^@^@^P^@^@^A^@^@^@^La^H^@^Lñ^L^H^Lñ^L^H´^K^@^@àr^@^@^F^@^@^@^@^P^@^@^D^@^@^@Ô^@^@^@Ô<80>^D^HÔ<80>^D^H ^@^@^@ ^@^@^@^D^@^@^@^D^@^@^@^G^@^@^@^La^H^@^Lñ^L^H^Lñ^L^H^T^@^@^@@^@^@^@^D^@^@^@^D^@^@^@Qåtd^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^F^@^@^@^D^@^@^@^D^@^@^@^P^@^@^@^A^@^@^@GNU^@^@^@^@^@^B^@^@^@^F^@^@^@      ^@^@^@U<89>å<83>ì^Hè5^@^@^@èÌ^@^@^@è·<97>^F^@ÉÃ^@^@^@^@^@1í^<89>á<83>äðPTRh Q^E^Hh`Q^E^HQVhìÌ^D^Hè^?È^@^@ô<90><90>U<89>åS<83>ì^Dè^@^@^@^@[<81>Ã,p^H^@<8b><93>üÿÿÿ<85>Òt^Eèª~û÷X[ÉÃ<90><90><90><90><90><90>U<89>åS<83>ì^D<80>=Äü^L^H^@uT¸0ñ^L^H-(ñ^L^HÁø^B<8d>Xÿ¡Àü^L^H9Ãv^_<8d>´&^@^@^@^@<83>À^A£Àü^L^Hÿ^T<85>(ñ^L^H¡Àü^L^H9Ãwè¸<80>^G^K^H<85>Àt^LÇ^D$ü~^L^HèÃ<85>^F^@Æ^EÄü^L^H^A<83>Ä^D[]Ã<8d>¶^@^@^@^@U¸à     ^K^H<89>å<83>ì^Xè^@^@^@^@Z<81>Â<8c>o^H^@<85>Àt <89>T$^LÇD$^H^@^@^@^@ÇD$^DÈü^L^HÇ^D$ü~^L^HèÕ<87>^F^@¡4ñ^L^H<85>Àt^R¸^@^@^@^@<85>Àt       Ç^D$4ñ^L^HÿÐÉÃU<89>å<83>ì^X<8b>E^P<89>D$^H<8b>E^L<89>D$^D<8b>E^H<89>^D$è¹æ^A^@<8b>E^P<89>D$^D<8b>E^H<89>^D$è<9b>^Q^@^@¸^@^@^@^@ÉÃU<89>å<83>ì(<8b>E^L<83>è^A<89>D$^H<8b>E^H<89>D$^DÇ^D$<91>+^K^Hè]^K^B^@<89>Eü<83>}ü^@x^K<8b>E^L<83>è^A;Eü^?     ÇEì^@^@^@^@ë?<8b>Eü^CE^HÆ^@^@<8b>Eü<89>Eøë"<8b>Eø^CE^H^O¶^@</u^Q<8b>U^H<83>Â^A<8b>Eø<8d>^D^BÆ^@^@ë
<83>mø^A<83>}ø^@yØ<8b>E^H<89>Eì<8b>EìÉÃU<89>å<83>ì(<8b>E^L<83>è^A<89>D$^H<8b>E^H<89>D$^DÇ^D$<91>+^K^HèÙ
^B^@<89>Eü<83>}ü^@x^K<8b>E^L<83>è^A;Eü^?        ÇEì^@^@^@^@ë^O<8b>Eü^CE^HÆ^@^@<8b>E^H<89>Eì<8b>EìÉÃU<89>å<81>ì(^D^@^@<8d><95>üûÿÿ¸^@^D^@^@<89>D$^HÇD$^D^@^@^@^@<89>^T$èPæ^A^@<8b>E^H<89>D$^LÇD$^H +^K^HÇD$^D^@^D^@^@<8d><85>üûÿÿ<89>^D$èëù^@^@<8b>E^P<83>è^A<89>D$^H<8b>E^L<89>D$^D<8d><85>üûÿÿ<89>^D$è<
^B^@<89>Eü<83>}ü^@x^K<8b>E^P<83>è^A;Eü^?^LÇ<85>ìûÿÿ^@^@^@^@ë^R<8b>Eü^CE^LÆ^@^@<8b>E^L<89><85>ìûÿÿ<8b><85>ìûÿÿÉÃU<89>åW<81>ì<84>^P^@^@<8d><95>ôïÿÿ¸^@^P^@^@<89>D$^HÇD$^D^@^@^@^@<89>^T$è©å^A^@<8b>E^H<89>D$^D<8d><85>ôïÿÿ<89>^D$è^TÞ^A^@<8d><85>ôïÿÿ¹ÿÿÿÿ<89><85><94>ïÿÿ¸^@^@^@^@ü<8b>½<94>ïÿÿò®<89>È÷Ð<83>è^A<89>Eø<8b>Eø<83>è^A^O¶<84>^Eôïÿÿ</t4<8d><95>ôïÿÿ<8d><85>ôïÿÿ¹ÿÿÿÿ<89><85><90>ïÿÿ¸^@^@^@^@ü<8b>½<90>ïÿÿò®<89>È÷Ð<83>è^A<8d>^D^BfÇ^@/^@<8d><85>ôïÿÿ¹ÿÿÿÿ<89><85><8c>ïÿÿ¸^@^@^@^@ü<8b>½<8c>ïÿÿò®<89>È÷Ð<83>è^A<89>EøÇEô^A^@^@^@ëw<8b>Eô^O¶<84>^Eôïÿÿ</ud<8b>EôÆ<84>^Eôïÿÿ^@^O¶<85>ôïÿÿ<84>ÀtC<8d><85><9c>ïÿÿ<89>D$^D<8d><85>ôïÿÿ<89>^D$è&^G^B^@<85>Àt'ÇD$^Dí^A^@^@<8d><85>ôïÿÿ<89>^D$èL^H^B^@<83>øÿu^LÇ<85><98>ïÿÿÿÿÿÿë!<8b>EôÆ<84>^Eôïÿÿ/<83>Eô^A<8b>Eô;Eø|<81>Ç<85><98>ïÿÿ^@^@^@^@<8b><85><98>ïÿÿ<81>Ä<84>^P^@^@_]ÃU<89>å<81>ì(^P^@^@ÇD$^D^@^@^@^@<8b>E^H<89>^D$è^O¸^@^@<89>EðÇEô^@^@^@^@<8d><95>ðïÿÿ¸^@^P^@^@<89>D$^HÇD$^D^@^@^@^@<89>^T$è^Vä^A^@ÇEø^@^@^@^@ÇEü^@^@^@^@<83>}ð^@^O<8e><9b>^@^@^@ÇD$^H^@^@^@^@ÇD$^D^@^@^@^@<8b>Eð<89>^D$è<83>·^@^@ëE<8b>Eø^CEü<89>D$^D<8b>Eô<89>^D$èÜÎ^A^@<89>Eô<83>}ô^@tM<8b>Uø<8b>Eü<89>Á^CMô<89>T$^H<8d><85>ðïÿÿ<89>D$^D<89>^L$èòâ^A^@<8b>Eø^AEüÇD$^H^@^P^@^@<8d><85>ðïÿÿ<89>D$^D<8b>Eð<89>^D$è?´^@^@<89>Eø<83>}ø^@^?<95><8b>Eð<89>^D$è<8b>´^@^@<8b>U^L<8b>Eü<89>^B<8b>EôÉÃU<89>å<83>ì(ÇD$^Hÿ^A^@^@ÇD$^DA^@^@^@<8b>E^H<89>^D$è^M·^@^@<89>EðÇEô^@^@^@^@ÇEø^@^@^@^@ÇEü^@^@^@^@<83>}ð^@^O<8e>

===========略===========

そこで、stringsコマンドなどでバイナリファイルの中で記述されている文字列を抽出してみます。

ファイルの全容はわかりませんが、何が記述されているかはなんとなく分かる。

今回は、nオプションで15文字以上の長さの文字列のみ出力しています。 またあまりにも多く抽出できるのでhead部分のみ抽出。

 strings -n 15 tmpxP3FoH | head
0<_t5<-t1<.t-<,f
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQj
*<_t/<-t+<.t'<,
+<_t0<-t,<.t(<,t$<:t </
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQj
HISTFILE=/dev/null
MYSQL_HISTFILE=/dev/null
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
# chkconfig: 12345 90 90
# description: %s

悪そうな文字列が並んでますね(小並

まとめ

今回は、T-Potの管理画面からログを見ているだけじゃなくて、実際にサーバーに入って、マルウェアを調査して見ました。 バイナリファイルの調査、もっとやりたいのですが現状の自分だとこれが限界・・・

バイナリに関しては10月に勉強する予定なので、技術力ついたらもっと深くまで調査します。