コンピュータウイルスの解析などに欠かせないリバースエンジニアリング技術ですが、何だか難しそうだな、という印象を抱いている人も多いのではないでしょうか。この連載では、「シェルコード」を例に、実践形式でその基礎を紹介していきます。(編集部)
ここまで6回連載してきた「リバースエンジニアリング入門」も今回の7回目で最終回となります。“心が折れる前に読み切る!”をテーマにしてきましたが、最後のほうは段々とアセンブリ命令漬けで心が折れてしまった人もいるかもしれません……。しかし、ここまで取り上げてきたシェルコードを丁寧に読み込み、1ステップずつ理解してきた方ならばきっと“リバースエンジニアリング力”が備わっているのではないかと思います。
今回はリバースエンジニアリング入門の卒業課題として、実際のマルウェアであるSQL Slammerを取り上げたいと思います。
SQL Slammerのサイズはわずか400バイト程度で、マルウェアといっても動作はほぼシェルコードと変わりません。今までのdownload_execやshell_bind_tcpのシェルコード解析で身に付けたスキルを用いれば、難しい題材ではありません。2003年に猛威をふるった本物のマルウェアを解析し、ここまでで身に付けた知識が実際のマルウェア解析に生かせることを実感してください。
解析に入る前の背景知識としてSQL Slammerについて簡単に説明します。SQL Slammerは2003年に世間を騒がせたワーム型のマルウェアで、MicrosoftのSQL Server 2000(Microsoft Desktop Engine 2000:MSDE)に存在したバッファオーバーフローの脆弱性(MS02-039)を狙って攻撃を行います。
このワームの特徴はその感染速度にあり、標的マシンへの侵入に成功すると自分自身を乗せたUDPパケットを力の限り投げまくり、感染拡大活動を行います。わずか10分間で7万5千台のコンピュータに感染したといわれています。
SQL Slammerに関しては多くの研究やニュースなどがWeb上で見つかります。興味のある方は、ぜひ検索エンジンなどで探してみてください。
【関連記事】
SQLワーム被害に「人災だ」の声、日本での影響は軽微(@ITNews)
http://www.atmarkit.co.jp/news/200301/28/sqlworm.html
管理者のジレンマを突いて爆発的に繁殖したSQL Slammer(@IT Windows Server Insider)
http://www.atmarkit.co.jp/fwin2k/insiderseye/20030128sqlworm/sqlworm.html
まずはSQL Slammerの検体を入手します。このサイトからSQL Slammerが入ったUDPパケットをpcap形式で取得できます(slammer.pcapをクリックするとダウンロードできます)。
なお、このpcapには本物のSQL Slammerが含まれていますので、自己責任で扱うようお願いいたします。場合によってはアンチウイルスソフトが反応する可能性もありますのでご注意ください。
Wireshark などのパケットアナライザで中を見てみるとUDPパケットが1つだけあります。この1つのUDPパケットの中にSQL Slammerの本体が格納されています(図1)。
それでは、このSQL Slammer入りpcapをIDAで直接開いてSQL Slammerのコードを解析してみましょう(もちろん、UDPパケットのペイロード部分をファイルとして切り出して、それをIDAで開いても構いませんが、その際は以下の説明とファイルオフセットが変わりますのでご注意ください)。
Copyright © ITmedia, Inc. All Rights Reserved.