-
-
Notifications
You must be signed in to change notification settings - Fork 66
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
88 additions
and
135 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,10 @@ | ||
* CFB | ||
* [Overview](/) | ||
* [Concept](/concept.md) | ||
* [Setup](/setup.md) | ||
* [Usage](/usage.md) | ||
* [Debugging](/debugging.md) | ||
* [Fuzzing](/fuzzing-vm-setup.md) | ||
* [Crash Analysis](/crash-analysis.md) | ||
* [Gallery](/gallery.md) | ||
* [FAQ](/faq.md) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# Concept | ||
|
||
`IrpDumper.sys` is the driver part of the CFB Broker that will auto-extract and install when launched. The driver will be responsible for hooking the IRP Major Function table of | ||
the driver that is requested to be hooked, via an IOCTL passed from the Broker. | ||
Upon success, the IRP table of the driver will then be pointing to `IrpDumper.sys` interception routine, as we can easily see with a debugger or tools like [`WinObjEx64`](https://github.com/hfiref0x/WinObjEx64). | ||
|
||
![img](https://i.imgur.com/dYqHE6q.png) | ||
|
||
`IrpDumper.sys` in itself then acts a rootkit, proxy-ing all calls to the targeted driver(s). When a `DeviceIoControl` is sent to a hooked driver, `IrpDumper` will simply capture the data if any, and push a message to the user-land agent (`Broker`), and yield the execution back to the legitimate drivers, allowing the intended code to continue as expected. | ||
The `Broker` stores all this data in user-land waiting for a event to ask for them. |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Screenshots | ||
|
||
## Boker | ||
|
||
## ImGUI Client | ||
|
||
## UWP Client | ||
|
||
### Intercepted IRP view | ||
|
||
![Intercepted IRP view](https://i.imgur.com/xMOIIhC.png) | ||
|
||
### IRP details | ||
|
||
![IRP Metadata](https://i.imgur.com/zmh2QAw.png) | ||
|
||
![IRP InputBuffer](https://i.imgur.com/j0W9ljL.png) | ||
|
||
### IRP replay | ||
|
||
![IRP Replay](https://i.imgur.com/9Ybq27G.png) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,36 @@ | ||
# Setting up CFB | ||
# Build CFB | ||
|
||
## Pre-Build | ||
|
||
The easiest and fastest way to get started is simply to download the artifacts from the Github Actions build workflow. They can be found [here](https://github.com/hugsy/CFB/actions/workflows/build.yml). | ||
|
||
## Build | ||
|
||
Building CFB requires only [`cmake`](), and the Windows [SDK]() and [WDK](). In a developer prompt: | ||
Building CFB requires only [`cmake`](https://cmake.org), and the Windows [SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/) and [WDK](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk). In a developer prompt: | ||
|
||
### To compile | ||
```powershell | ||
cd \path\to\CFB.git | ||
mkdir build; cd build | ||
cmake .. -DCFB_BUILD_TOOLS:BOOL=ON | ||
cmake --build . --verbose --parallel $env:NUMBER_OF_PROCESSORS --config $config | ||
cd .. | ||
mkdir build | ||
cmake -S . -B ./build -D CFB_BUILD_TOOLS:BOOL=ON -D CFB_BUILD_GUI:BOOL=ON -A $platform | ||
cmake --build ./build --verbose --parallel $env:NUMBER_OF_PROCESSORS --config $config | ||
``` | ||
|
||
Where `$config` can be either `RelWithDebInfo` (normal use) or `Debug` for debugging. | ||
Where `$platform` can be: | ||
- `x64` | ||
- `arm64` | ||
|
||
To isolate only the useful binaries produced from the compilation stage into a single folder, the optional next step is to run `cmake install`. | ||
`win32` may work to build the broker. However, ImGUI doesn't compile on 32-bit. | ||
|
||
### To install | ||
|
||
After building: | ||
|
||
```powershell | ||
mkdir bins; cd build | ||
cmake --install . --config $config --prefix ../bins --verbose | ||
cd .. | ||
mkdir artifact | ||
cmake --install ./build --config $config --prefix ./artifact --verbose | ||
``` | ||
|
||
Where `$config` can be: | ||
- `RelWithDebInfo` (you probably want this one) | ||
- `Debug` for debugging (very verbose outputs) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# Usage | ||
|
||
A Windows 7+ machine ([Windows 10 SDK VM](https://developer.microsoft.com/en-us/windows/downloads/virtual-machines) is recommended) | ||
|
||
On this target machine, simply enable BCD test signing flag (in `cmd.exe` as Admin): | ||
|
||
``` | ||
bcdedit.exe /set {whatever-profile} testsigning on | ||
``` | ||
|
||
If using in Debug mode, `IrpDumper.sys` will provide a lot more valuable information as to what's being hooked (the price of performance). All those info can be visible via tools like `DebugView.exe` or a kernel debugger like WinDbg. In either case, you must enable kernel debug BCD flag (in `cmd.exe` as Admin): | ||
|
||
``` | ||
bcdedit.exe /set {whatever-profile} debug on | ||
``` | ||
|
||
It is also recommended to edit the KD verbosity level, via: | ||
- the registry for a permanent effect (`reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter" /v DEFAULT /t REG_DWORD /d 0xf`) | ||
- directly from WinDbg for only the current session (`ed nt!Kd_Default_Mask 0xf`) | ||
|
||
|
||
If you plan on (re-)compiling any of the tools, you must install VS (2019 preferred). If using the Release binaries, you only need VS C++ Redist installed(x86 or x64 depending on your VM architecture). | ||
|
||
Follow the indications in the `Docs/` folder to improve your setup. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters