マルウェアMiraiのソースコードが公開されているというのを知り、どういう風に作られているか単純に知りたかったので、素人ながら解析してみました。
jgamblin/Mirai-Source-Code: Leaked Mirai Source Code for Research/IoC Development Purposes
特別に悪意あるコードだけでなく、単に私が知らなかった普通に使うUnixコマンドの説明の書いてあります。
ちなみに調査用のコードなので、悪用は厳禁です。
Rootユーザか調べる方法
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 - 端末の行設定の変更や表示を行う
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のインストール
apt-get install -y gcc golang electric-fence
gccはCコンパイラ、golangはGo言語コンパイラはわかったけど、
electric-fence
は何?ってなった。
メモリ破壊検出ツールです。バッファオーバーフローのときの検出ツール。
プログラム中の動的配列(malloc等で確保した配列)の開始位置・終了位置を覚えて これらの配列の領域をポインタ等が踏み越えたときにセグフォで停止させてくれる ものです。
ですので、このセグフォによるコア(core)をgdb等のデバッガで確認すれば、 どこで、どの配列の領域侵害で停止したのかが一瞬で分かるようになります。
C言語:メモリ破壊検出ツール electric fenceの使い方