Skip to content

Commit 9dd90bc

Browse files
authored
Merge pull request #1673 from HackTricks-wiki/update_SantaStealer_is_Coming_to_Town__A_New__Ambitious_I_20251215_183334
SantaStealer is Coming to Town A New, Ambitious Infostealer ...
2 parents a17ba27 + 2953774 commit 9dd90bc

File tree

7 files changed

+62
-22
lines changed

7 files changed

+62
-22
lines changed

src/crypto/ctf-workflow/README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ These are useful when the task is identification and layer peeling, or when you
1717
### Hash lookups
1818

1919
- Google the hash (surprisingly effective).
20-
- https://crackstation.net/
21-
- https://md5decrypt.net/
22-
- https://hashes.org/search.php
23-
- https://www.onlinehashcrack.com/
24-
- https://gpuhash.me/
25-
- http://hashtoolkit.com/reverse-hash
20+
- [https://crackstation.net/](https://crackstation.net/)
21+
- [https://md5decrypt.net/](https://md5decrypt.net/)
22+
- [https://hashes.org/search.php](https://hashes.org/search.php)
23+
- [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com/)
24+
- [https://gpuhash.me/](https://gpuhash.me/)
25+
- [http://hashtoolkit.com/reverse-hash](http://hashtoolkit.com/reverse-hash)
2626

2727
### Identification helpers
2828

@@ -71,8 +71,8 @@ Common tells:
7171

7272
### Vigenère
7373

74-
- https://www.dcode.fr/vigenere-cipher
75-
- https://www.guballa.de/vigenere-solver
74+
- [https://www.dcode.fr/vigenere-cipher](https://www.dcode.fr/vigenere-cipher)
75+
- [https://www.guballa.de/vigenere-solver](https://www.guballa.de/vigenere-solver)
7676

7777
### Bacon cipher
7878

@@ -153,8 +153,8 @@ CTFs sometimes give `openssl enc` outputs (header often begins with `Salted__`).
153153

154154
Bruteforce helpers:
155155

156-
- https://github.com/glv2/bruteforce-salted-openssl
157-
- https://github.com/carlospolop/easy_BFopensslCTF
156+
- [https://github.com/glv2/bruteforce-salted-openssl](https://github.com/glv2/bruteforce-salted-openssl)
157+
- [https://github.com/carlospolop/easy_BFopensslCTF](https://github.com/carlospolop/easy_BFopensslCTF)
158158

159159
### General toolset
160160

src/crypto/symmetric/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ If you know any plaintext segment at position `i`, you can recover keystream byt
171171

172172
Autosolvers:
173173

174-
- https://wiremask.eu/tools/xor-cracker/
174+
- [https://wiremask.eu/tools/xor-cracker/](https://wiremask.eu/tools/xor-cracker/)
175175

176176
### RC4
177177

src/crypto/tls-and-certificates/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,6 @@ openssl pkcs12 -in file.pfx -out out.pem
4545

4646
### CT logs
4747

48-
- https://crt.sh/
48+
- [https://crt.sh/](https://crt.sh/)
4949

5050
{{#include ../../banners/hacktricks-training.md}}

src/stego/audio/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Spectrogram stego hides data by shaping energy over time/frequency so it becomes
3232

3333
Primary tool for spectrogram inspection:
3434

35-
- https://www.sonicvisualiser.org/
35+
- [https://www.sonicvisualiser.org/](https://www.sonicvisualiser.org/)
3636

3737
### Alternatives
3838

@@ -71,7 +71,7 @@ python3 WavSteg.py -r -b 2 -s sound.wav -o out.bin
7171

7272
### DeepSound
7373

74-
- http://jpinsoft.net/deepsound/download.aspx
74+
- [http://jpinsoft.net/deepsound/download.aspx](http://jpinsoft.net/deepsound/download.aspx)
7575

7676
## DTMF / dial tones
7777

@@ -81,7 +81,7 @@ DTMF encodes characters as pairs of fixed frequencies (telephone keypad). If the
8181

8282
Online decoders:
8383

84-
- https://unframework.github.io/dtmf-detect/
85-
- http://dialabc.com/sound/detect/index.html
84+
- [https://unframework.github.io/dtmf-detect/](https://unframework.github.io/dtmf-detect/)
85+
- [http://dialabc.com/sound/detect/index.html](http://dialabc.com/sound/detect/index.html)
8686

8787
{{#include ../../banners/hacktricks-training.md}}

src/stego/images/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,13 @@ High-signal locations:
153153

154154
If you are specifically facing steghide payloads in JPEGs, consider using `stegseek` (faster bruteforce than older scripts):
155155

156-
- https://github.com/RickdeJager/stegseek
156+
- [https://github.com/RickdeJager/stegseek](https://github.com/RickdeJager/stegseek)
157157

158158
### Error Level Analysis
159159

160160
ELA highlights different recompression artifacts; it can point you to regions that were edited, but it’s not a stego detector by itself:
161161

162-
- https://29a.ch/sandbox/2012/imageerrorlevelanalysis/
162+
- [https://29a.ch/sandbox/2012/imageerrorlevelanalysis/](https://29a.ch/sandbox/2012/imageerrorlevelanalysis/)
163163

164164
## Animated images
165165

src/stego/workflow/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,15 @@ math.isqrt(2500) # 50
155155

156156
Binary-to-image helper:
157157

158-
- https://www.dcode.fr/binary-image
158+
- [https://www.dcode.fr/binary-image](https://www.dcode.fr/binary-image)
159159

160160
#### Braille
161161

162-
- https://www.branah.com/braille-translator
162+
- [https://www.branah.com/braille-translator](https://www.branah.com/braille-translator)
163163

164164
## Reference lists
165165

166-
- https://0xrick.github.io/lists/stego/
167-
- https://github.com/DominicBreuker/stego-toolkit
166+
- [https://0xrick.github.io/lists/stego/](https://0xrick.github.io/lists/stego/)
167+
- [https://github.com/DominicBreuker/stego-toolkit](https://github.com/DominicBreuker/stego-toolkit)
168168

169169
{{#include ../../banners/hacktricks-training.md}}

src/windows-hardening/av-bypass.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,6 +1025,44 @@ Related building blocks and examples
10251025
- Memory masking hooks (e.g., simplehook) and stack‑cutting PIC (stackcutting)
10261026
- PIC call‑stack spoofing stubs (e.g., Draugr)
10271027

1028+
## SantaStealer Tradecraft for Fileless Evasion and Credential Theft
1029+
1030+
SantaStealer (aka BluelineStealer) illustrates how modern info-stealers blend AV bypass, anti-analysis and credential access in a single workflow.
1031+
1032+
### Keyboard layout gating & sandbox delay
1033+
1034+
- A config flag (`anti_cis`) enumerates installed keyboard layouts via `GetKeyboardLayoutList`. If a Cyrillic layout is found, the sample drops an empty `CIS` marker and terminates before running stealers, ensuring it never detonates on excluded locales while leaving a hunting artifact.
1035+
1036+
```c
1037+
HKL layouts[64];
1038+
int count = GetKeyboardLayoutList(64, layouts);
1039+
for (int i = 0; i < count; i++) {
1040+
LANGID lang = PRIMARYLANGID(HIWORD((ULONG_PTR)layouts[i]));
1041+
if (lang == LANG_RUSSIAN) {
1042+
CreateFileA("CIS", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
1043+
ExitProcess(0);
1044+
}
1045+
}
1046+
Sleep(exec_delay_seconds * 1000); // config-controlled delay to outlive sandboxes
1047+
```
1048+
1049+
### Layered `check_antivm` logic
1050+
1051+
- Variant A walks the process list, hashes each name with a custom rolling checksum, and compares it against embedded blocklists for debuggers/sandboxes; it repeats the checksum over the computer name and checks working directories such as `C:\analysis`.
1052+
- Variant B inspects system properties (process-count floor, recent uptime), calls `OpenServiceA("VBoxGuest")` to detect VirtualBox additions, and performs timing checks around sleeps to spot single-stepping. Any hit aborts before modules launch.
1053+
1054+
### Fileless helper + double ChaCha20 reflective loading
1055+
1056+
- The primary DLL/EXE embeds a Chromium credential helper that is either dropped to disk or manually mapped in-memory; fileless mode resolves imports/relocations itself so no helper artifacts are written.
1057+
- That helper stores a second-stage DLL encrypted twice with ChaCha20 (two 32-byte keys + 12-byte nonces). After both passes, it reflectively loads the blob (no `LoadLibrary`) and calls exports `ChromeElevator_Initialize/ProcessAllBrowsers/Cleanup` derived from [ChromElevator](https://github.com/xaitax/Chrome-App-Bound-Encryption-Decryption).
1058+
- The ChromElevator routines use direct-syscall reflective process hollowing to inject into a live Chromium browser, inherit AppBound Encryption keys, and decrypt passwords/cookies/credit cards straight from SQLite databases despite ABE hardening.
1059+
1060+
1061+
### Modular in-memory collection & chunked HTTP exfil
1062+
1063+
- `create_memory_based_log` iterates a global `memory_generators` function-pointer table and spawns one thread per enabled module (Telegram, Discord, Steam, screenshots, documents, browser extensions, etc.). Each thread writes results into shared buffers and reports its file count after a ~45s join window.
1064+
- Once finished, everything is zipped with the statically linked `miniz` library as `%TEMP%\\Log.zip`. `ThreadPayload1` then sleeps 15s and streams the archive in 10 MB chunks via HTTP POST to `http://<C2>:6767/upload`, spoofing a browser `multipart/form-data` boundary (`----WebKitFormBoundary***`). Each chunk adds `User-Agent: upload`, `auth: <build_id>`, optional `w: <campaign_tag>`, and the last chunk appends `complete: true` so the C2 knows reassembly is done.
1065+
10281066
## References
10291067
10301068
- [Crystal Kit – blog](https://rastamouse.me/crystal-kit/)
@@ -1050,5 +1088,7 @@ Related building blocks and examples
10501088
- [Microsoft – mklink command reference](https://learn.microsoft.com/windows-server/administration/windows-commands/mklink)
10511089
10521090
- [Check Point Research – Under the Pure Curtain: From RAT to Builder to Coder](https://research.checkpoint.com/2025/under-the-pure-curtain-from-rat-to-builder-to-coder/)
1091+
- [Rapid7 – SantaStealer is Coming to Town: A New, Ambitious Infostealer](https://www.rapid7.com/blog/post/tr-santastealer-is-coming-to-town-a-new-ambitious-infostealer-advertised-on-underground-forums)
1092+
- [ChromElevator – Chrome App Bound Encryption Decryption](https://github.com/xaitax/Chrome-App-Bound-Encryption-Decryption)
10531093
10541094
{{#include ../banners/hacktricks-training.md}}

0 commit comments

Comments
 (0)