ハニーポッター見習いのばぁどです。
現在、T-Potを構築して日々攻撃を観測しています。
今回はハニーポットの一つであるCowrie でダウンロードされたファイルについて調べようと思います。
Cowrie
ハニーポットの一つです。
以前の記事で軽く紹介もしました。
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月に勉強する予定なので、技術力ついたらもっと深くまで調査します。