
完全なシステムシミュレータを使用したリバースエンジニアリングソフトウェア
RESimは、ネットワーク化されたコンピュータ内のプロセス、プログラム、データフローに関する詳細な洞察を提供する動的システム分析ツールです。RESimは、Simicsプラットフォームのプロセッサ、周辺デバイス(例:ネットワークインターフェイスカード)、ディスクの忠実度の高いモデルを使用して、コンピュータのネットワークをシミュレートします。ネットワーク化されたコンピュータプラットフォームモデルは、シミュレート対象の物理システムから抽出されたイメージからコピーされた対象ソフトウェアをロードして実行します。
RESimは、LinuxベースおよびWindowsシステムのネットワークのリバースエンジニアリングと脆弱性分析を支援するために、実行するプログラムと消費するデータの観点からプロセスをインベントリします。データソースには、ファイル、デバイスインターフェイス、プロセス間通信メカニズムが含まれます。プロセスの実行とデータ消費は、シミュレートされたシステムへのソフトウェアのインストールや注入を行わず、プロセスをホストするカーネルの詳細な知識を必要とせずに、実行中のシミュレートシステムの動的分析を通じて文書化されます。
RESimはまた、IDA ProおよびGhidra逆アセンブラ/デバッガへのプラグインを通じて、個々の実行プログラムへのインタラクティブな可視性を提供します。逆アセンブラ/デバッガを使用すると、未来の時間または過去の時間[2]の選択されたイベントでシミュレーションを一時停止するブレークポイントを設定できます。例えば、RESimは、選択されたメモリアドレスの最新の変更までシミュレーション状態を逆転させることができます。リロード可能なチェックポイントは、システム実行中の任意の時点で生成できます。RESimシミュレーションは、例えば指定されたプロセスが実行スケジュールされたときに、検査のために一時停止し、その後、メモリやレジスタの状態が変更された状態で継続できます。アナリストはメモリやレジスタの内容を明示的に変更でき、また、システムイベントに基づいてメモリを動的に拡張することもできます。例:suプログラムによって読み取られたときにパスワードファイルのエントリを変更する。
分析は、シミュレート対象システムのメモリとプロセッサ状態の観察のみを通じて実行され、シェル、ソフトウェア注入、カーネルシンボルテーブルは不要です。この分析は、観測機能がシミュレートシステムの状態に影響を与えないため、外部分析と呼ばれます。
RESimは、American Fuzzing Lop (AFL)ファザーと統合されています。このファジングシステムは、ファジングデータをアプリケーションの読み取りバッファに直接注入し、ファジングのセットアップとワークフローを簡素化します。RESimは、検出されたクラッシュを自動的に再生および分析し、例えば実行制御の破損など、クラッシュの原因を特定します。
詳細については、RESimユーザーガイドを参照してください。RESimの簡単なデモンストレーションはこちらでご覧いただけます: (https://nps.box.com/s/rf3n104ualg38pon6b7fm6m6wqk9zz50)
ディスクイメージの例については、このreadmeで説明されています。
RESimは、DARPAサイバーグランドチャレンジ向けに作成されたソフトウェア検証およびフォレンジック分析プラットフォームに由来します。そのリポジトリはこちらです: https://github.com/mfthomps/cgc-monitor。その研究を説明する論文はこちらです:https://www.sciencedirect.com/science/article/pii/S1742287618301920 また、CGCモニターにおけるSimicsの使用に関する優れた概要はこちらです:https://software.intel.com/content/www/us/en/develop/blogs/simics-software-automates-cyber-grand-challenge-validation.html
[1]SimicsはIntel社が開発したフルシステムシミュレータであり、同社が関連するすべての商標を保有しています。 [2]Simics 7では「リバース実行」は非推奨になりましたが、RESimはそれを再び追加しています。
This software was created by United States Government employees
and may not be copyrighted.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.