マルウェアハンティングビジネスと海洋専門用語を扱うAvastは、不正バイトを嫌う同志や技術志向の人々に、より優れた分析ツールを提供することを目的に、マシンコード逆コンパイラRetDecをオープンソースとしてリリースした。
今月初めにフランスで開催された Botconf 2017 で議論されたように、RetDec はマシン コード (バイナリ実行可能ファイル) を元のソース コードに近いものに変換する方法を提供します。
逆アセンブラはバイナリをアセンブリ コード (ある程度読みやすいマシン コードの表現) に変換するのに対し、デコンパイラーは、特定のプロセッサに結び付けられていない、より読みやすい C コードのような高レベルのソース コード言語までさらに遡ろうとします。
Avast は、LLVM に基づく RetDec を使用して、Apocalypse、BadBlock、Bart、CrySiS、TeslaCrypt などのさまざまなランサムウェアを逆コンパイルし、被害者のファイルの不要な暗号化を解除しました。
Avastの脅威インテリジェンスチームリーダーであるJakub Kroustek氏は、 The Registerへの電子メールで、さまざまな優れた逆コンパイルツールが利用可能であるものの、その多くは有料製品であり、簡単に拡張できないと述べています。
既存のオープンソースのデコンパイラは代替手段を提供しているが、「これらは必ずしも適切な安定性、コードの可読性、品質を実現するわけではない」と彼は述べた。
クロウステック氏は、友好的なMITライセンスの下で提供されるRetDecが「生成されるコードの品質と[拡張性]の面で市場のギャップを埋めるだろう」と期待していると述べた。
彼は、RetDec がセキュリティ研究者だけでなく、自分のコードがどのようにコンパイルされるかを研究することに興味のある開発者や、リバース エンジニアリング プロジェクトに取り組んでいる人々にとっても役立つだろうと期待しています。
RetDec は Retargetable Decompiler の略で、ELF、PE、Mach-O、COFF、AR (アーカイブ)、Intel HEX、生のマシン コードなど、さまざまな形式のさまざまな 32 ビット アーキテクチャ (Intel x86、ARM、MIPS、PIC32、PowerPC) のコードをターゲットにするために使用できることを意味します。
マシンコード逆コンパイラである RetDec は、Java、Python、または .Net ソース ファイルから派生したバイトコードの逆コンパイルには適していません。
コードのコンパイル プロセスでは有用な情報が破棄されるため、プロセスを逆にすると、非可逆アルゴリズムで画像を圧縮してから再度拡大するのと同じように、元の結果に達しない傾向があります。
コードの作成者がコードを難読化しようとすると、逆コンパイルがさらに困難になる可能性があります。
2015 年からオンライン サービスとして利用可能になっている RetDec は、デバッグ情報の利用や命令イディオムの再構築などの手法によってこれらの課題に対処しようとします。
「私たちのモチベーションは、セキュリティコミュニティに貢献することです。私たちは日々そのツールを使っています。ですから、私たち自身のツールも共有しない手はないはずです」とクロウステック氏は述べた。「そして、より多くのユーザーや開発者の参加によって、私たちのツールがさらに改善されることを期待しています。」
クロウステック氏は、コードが公開されてから 4 日間で、アバストはすでに数十件のメッセージ、改善、バグ報告を受け取っていると述べた。®