LoginSignup
64
60

More than 3 years have passed since last update.

マルウェア Miraiを解析してわかった知識

Last updated at Posted at 2019-10-13

マルウェアMiraiのソースコードが公開されているというのを知り、どういう風に作られているか単純に知りたかったので、素人ながら解析してみました。
jgamblin/Mirai-Source-Code: Leaked Mirai Source Code for Research/IoC Development Purposes

特別に悪意あるコードだけでなく、単に私が知らなかった普通に使うUnixコマンドの説明の書いてあります。
ちなみに調査用のコードなので、悪用は厳禁です。

Rootユーザか調べる方法

/scripts/cross-compile.sh
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi
# 普通のユーザは数値が返る
$ id -u
501
# rootユーザのときは0が返る
$ sudo id -u
0

Linuxコマンド【 id 】ユーザーIDとグループIDを表示 - Linux入門 - Webkaru

echo

オプションに-nをつけると新しい行で出力されます。

$ echo -n "Install mysql-server and mysql-client (y/n)? "
Install mysql-server and mysql-client (y/n)?

stty

Ubuntu Manpage: stty - 端末の行設定の変更や表示を行う

/scripts/cross-compile.sh
old_stty_cfg=$(stty -g)
stty raw -echo
answer=$( while ! head -c 1 | grep -i '[ny]' ;do true ;done )
stty $old_stty_cfg

electric fenceのインストール

/scripts/cross-compile.sh
apt-get install -y gcc golang electric-fence

gccはCコンパイラ、golangはGo言語コンパイラはわかったけど、
electric-fenceは何?ってなった。

メモリ破壊検出ツールです。バッファオーバーフローのときの検出ツール。

プログラム中の動的配列(malloc等で確保した配列)の開始位置・終了位置を覚えて これらの配列の領域をポインタ等が踏み越えたときにセグフォで停止させてくれる ものです。
ですので、このセグフォによるコア(core)をgdb等のデバッガで確認すれば、 どこで、どの配列の領域侵害で停止したのかが一瞬で分かるようになります。

C言語:メモリ破壊検出ツール electric fenceの使い方

参考

64
60
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
60