
増加するマルウェアは、高度な遮断回避技術を採用しています。最も広く使われている手法の一つが、ドメイン生成アルゴリズム(DGA)です。これは定期的にC&Cサーバーに接続するためのドメインセットを生成します。これらのDGAドメインの大半はランダムな英数字列を生成し、標準的なドメインとは構造が大きく異なります。ドメイン内のバイグラムのセットが、Alexaトップ100万の中で発生する頻度を分析することで、そのドメインがランダム文字列で構成されているのか、それとも正当な人間が読めるドメインなのかを検出できます。ドメインがほぼすべて、Alexaトップ100万内で稀にしか出現しない低頻度バイグラムで構成されている場合、そのドメインはランダム文字列である可能性が高くなります。母音と子音のバイグラムが最も頻繁に出現するのに対し、文字と整数のバイグラムは最も頻度が低くなります。このスクリプトは10万個のGameoverZeusドメインに対して実行され、100%の検出率を達成し、ドメインホワイトリストを一切適用しない状態でのAlexaトップ100万に対する誤検出率は8%でした。
本システムはUbuntuおよびRaspberryPiでテストされています。 現在、RaspberryPiをBind9を使用したDNSサーバーとして設定しています。 DGA-DetectionスクリプトもRaspberryPi上で実行され、リクエストを読み取ります。 リクエストは処理され、潜在的なDGAかどうかが判断されます。
git clone https://github.com/philarkwright/DGA-Detection.git
cd DGA-Detection
chmod +x install.sh
./install.sh
sudo python dga_detection.py
nohup sudo python dga-detection.py -o 2 -i <interface>
install.sh ファイルを実行する際、git:// プロトコルはポート9418を使用することに注意してください。そのため、ファイアウォールでこのポートへのアウトバウンド接続が許可されていることを確認してください。
このプロジェクトはまだ開発段階です。
自宅ネットワークでネットワークレベルでスクリプトを実行中、Google Chromeで特定のGoogle検索を行うと、DGAドメインと思われる警告が多数表示されることに気づきました。これらのサイト(通常は中国語のサイトで、ドメインに意味不明な文字列を使用しています)に実際にアクセスしなくても、Google Chromeはそれらをプリロードして取得するため、警告が発生します。
注: ホワイトリスト機能はAlexaトップ100万を使用します。
Twitter @philarkwright までご連絡ください。