.. | ||
blobrunner.md | ||
README.md |
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
-
ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリにPRを提出してください。
Wasmデコンパイラ/ Watコンパイラ
オンライン:
- https://webassembly.github.io/wabt/demo/wasm2wat/index.htmlを使用して、wasm(バイナリ)からwat(クリアテキスト)にデコンパイルします。
- https://webassembly.github.io/wabt/demo/wat2wasm/を使用して、watからwasmにコンパイルします。
- https://wwwg.github.io/web-wasmdec/を使用してデコンパイルを試すこともできます。
ソフトウェア:
.Netデコンパイラ
https://github.com/icsharpcode/ILSpy Visual Studio Code用のILSpyプラグイン:どのOSでも使用できます(VSCodeから直接インストールできます。gitをダウンロードする必要はありません。ExtensionsをクリックしてILSpyを検索します)。 デコンパイル、変更、再コンパイルが必要な場合は、https://github.com/0xd4d/dnSpy/releasesを使用できます(関数内の何かを変更するには、右クリック -> Modify Methodをクリックします)。 https://www.jetbrains.com/es-es/decompiler/も試してみることができます。
DNSpyログ
DNSpyが情報をファイルに記録するために、次の.Netの行を使用できます:
using System.IO;
path = "C:\\inetpub\\temp\\MyTest2.txt";
File.AppendAllText(path, "Password: " + password + "\n");
DNSpy デバッグ
DNSpyを使用してコードをデバッグするには、次の手順を実行する必要があります。
まず、デバッグに関連する アセンブリ属性を変更します:
From:
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
/hive/hacktricks/reversing/reversing-tools/README.md
Reversing Tools
This section provides an overview of various tools that can be used for reverse engineering and analyzing software. These tools are essential for understanding the inner workings of a program and identifying vulnerabilities or weaknesses.
Disassemblers
Disassemblers are tools that convert machine code into assembly code, allowing you to analyze and understand the low-level instructions of a program. Some popular disassemblers include:
Debuggers
Debuggers are tools that allow you to analyze and manipulate the execution of a program. They provide features such as breakpoints, stepping through code, and inspecting memory. Some popular debuggers include:
Decompilers
Decompilers are tools that convert compiled machine code back into a high-level programming language. They can be useful for understanding the logic and structure of a program. Some popular decompilers include:
Binary Analysis Frameworks
Binary analysis frameworks provide a set of tools and libraries for analyzing binary files. They often include features such as static and dynamic analysis, vulnerability detection, and exploit development. Some popular binary analysis frameworks include:
Sandboxes
Sandboxes are isolated environments that allow you to execute and analyze potentially malicious software safely. They provide a controlled environment for observing the behavior of a program without risking damage to your system. Some popular sandboxes include:
Other Tools
In addition to the above, there are many other tools available for reverse engineering and analyzing software. Some notable mentions include:
Remember, the choice of tools depends on the specific task at hand and personal preference. It's important to experiment with different tools and find the ones that work best for you.
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default |
DebuggableAttribute.DebuggingModes.DisableOptimizations |
DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints |
DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
そして、コンパイルをクリックします:
次に、新しいファイルを ファイル >> モジュールを保存... に保存します:
これは必要です。なぜなら、これを行わないと、実行時にコードにいくつかの最適化が適用され、デバッグ中にブレークポイントがヒットしないか、一部の変数が存在しない可能性があるからです。
次に、.NetアプリケーションがIISによって実行されている場合、次のコマンドで再起動できます:
iisreset /noforce
次に、デバッグを開始するためには、すべての開いているファイルを閉じ、デバッグタブでプロセスにアタッチを選択する必要があります。
次に、w3wp.exeを選択してIISサーバーにアタッチし、アタッチをクリックします。
プロセスのデバッグが開始されたので、停止してすべてのモジュールをロードします。まず、デバッグメニューのBreak Allをクリックし、次にデバッグメニューのWindowsからModulesをクリックします。
Modulesの中の任意のモジュールをクリックし、Open All Modulesを選択します。
Assembly Explorerの中の任意のモジュールを右クリックし、Sort Assembliesをクリックします。
Java decompiler
https://github.com/skylot/jadx https://github.com/java-decompiler/jd-gui/releases
Debugging DLLs
IDAを使用する
- rundll32をロードする(64ビットはC:\Windows\System32\rundll32.exe、32ビットはC:\Windows\SysWOW64\rundll32.exe)
- Windbgデバッガを選択する
- "ライブラリのロード/アンロード時に中断"を選択する
- 実行のパラメータを設定し、DLLのパスと呼び出したい関数を指定します。
その後、デバッグを開始すると、各DLLがロードされるたびに実行が停止します。rundll32がDLLをロードすると、実行が停止します。
しかし、ロードされたDLLのコードにアクセスする方法はわかりません。
x64dbg/x32dbgを使用する
- rundll32をロードする(64ビットはC:\Windows\System32\rundll32.exe、32ビットはC:\Windows\SysWOW64\rundll32.exe)
- コマンドラインを変更する( File --> Change Command Line )と、dllのパスと呼び出したい関数を設定します。例:"C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\14.ridii_2.dll",DLLMain
- Options --> Settings を変更し、"DLL Entry"を選択します。
- それから実行を開始し、デバッガは各dllメインで停止します。いずれかの時点で、自分のdllのdll Entryで停止します。そこから、ブレークポイントを設定したい場所を検索します。
win64dbgで実行が何らかの理由で停止された場合、win64dbgウィンドウの上部にあるコードがどこにあるかが表示されます。
その後、デバッグしたいdllで実行が停止した場所を確認できます。
ARM & MIPS
{% embed url="https://github.com/nongiach/arm_now" %}
シェルコード
blobrunnerを使用してシェルコードをデバッグする
Blobrunnerは、メモリ内のスペースにシェルコードを割り当て、シェルコードが割り当てられたメモリアドレスを示し、実行を停止します。 その後、プロセスにデバッガ(Idaまたはx64dbg)をアタッチし、指定されたメモリアドレスにブレークポイントを設定し、実行を再開します。これにより、シェルコードをデバッグできます。
リリースのGitHubページには、コンパイルされたリリースが含まれるzipファイルがあります:https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5 以下のリンクに、Blobrunnerのわずかに変更されたバージョンがあります。コンパイルするには、Visual Studio CodeでC/C++プロジェクトを作成し、コードをコピーして貼り付け、ビルドします。
{% page-ref page="blobrunner.md" %}
jmp2itを使用してシェルコードをデバッグする
jmp2it は、blobrunnerと非常に似ています。シェルコードをメモリ内のスペースに割り当て、永遠のループを開始します。その後、プロセスにデバッガをアタッチし、再生を開始して2〜5秒待ち、停止を押すと、永遠のループの中にいます。永遠のループの次の命令にジャンプし、最終的にシェルコードを実行します。
リリースページからjmp2itのコンパイル済みバージョンをダウンロードできます。
Cutterを使用してシェルコードをデバッグする
Cutterは、radareのGUIです。Cutterを使用すると、シェルコードをエミュレートして動的に検査できます。
Cutterでは、「ファイルを開く」と「シェルコードを開く」の2つのオプションがあります。私の場合、シェルコードをファイルとして開いた場合は正しく逆コンパイルされましたが、シェルコードとして開いた場合は逆コンパイルされませんでした。
特定の場所でエミュレーションを開始するには、そこにブレークポイントを設定し、おそらくCutterが自動的にそこからエミュレーションを開始します。
たとえば、ヘックスダンプ内でスタックを表示できます。
シェルコードの難読化を解除し、実行される関数を取得する
scdbgを試してみるべきです。 これは、シェルコードが使用している関数や、シェルコードがメモリ内で自己復号化しているかどうかなどを教えてくれます。
scdbg.exe -f shellcode # Get info
scdbg.exe -f shellcode -r #show analysis report at end of run
scdbg.exe -f shellcode -i -r #enable interactive hooks (file and network) and show analysis report at end of run
scdbg.exe -f shellcode -d #Dump decoded shellcode
scdbg.exe -f shellcode /findsc #Find offset where starts
scdbg.exe -f shellcode /foff 0x0000004D #Start the executing in that offset
scDbgには、グラフィカルなランチャーもあります。ここで、必要なオプションを選択してシェルコードを実行することができます。
Create Dumpオプションは、シェルコードがメモリ内で動的に変更された場合に、最終的なシェルコードをダンプします(デコードされたシェルコードをダウンロードするのに便利です)。start offsetは、特定のオフセットでシェルコードを開始するのに役立ちます。Debug Shellオプションは、scDbgターミナルを使用してシェルコードをデバッグするのに便利です(ただし、前述のオプションのいずれかを使用する方が、Idaまたはx64dbgを使用できるため、より良いです)。
CyberChefを使用した逆アセンブル
シェルコードファイルを入力としてアップロードし、次のレシピを使用して逆アセンブルします:https://gchq.github.io/CyberChef/#recipe=To_Hex('Space',0)Disassemble_x86('32','Full%20x86%20architecture',16,0,true,true)
Movfuscator
この難読化ツールは、すべての命令をmov
に変更します(本当にクールですね)。また、実行フローを変更するために割り込みも使用します。詳細については、以下を参照してください:
- https://www.youtube.com/watch?v=2VF_wPkiBJY
- https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas_2015_the_movfuscator.pdf
運が良ければ、demovfuscatorがバイナリを復号化します。いくつかの依存関係があります。
apt-get install libcapstone-dev
apt-get install libz3-dev
そして、keystoneをインストールします(apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install
)
もしCTFをプレイしている場合、フラグを見つけるためのこの回避策は非常に役立つでしょう:https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html
Delphi
Delphiでコンパイルされたバイナリには、https://github.com/crypto2011/IDRを使用できます。
コース
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSを入手したいですか?または、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループに参加するか、telegramグループに参加するか、Twitterで私をフォローしてください🐦@carlospolopm.
-
**ハッキングのトリックを共有するには、hacktricksのリポジトリとhacktricks-cloudのリポジトリ**にPRを提出してください。