A Collection of incredible Malware Analysis and Reverse Engineering
https://x.com/embee_research/status/1674001545476861954
@reverseengine
https://x.com/embee_research/status/1674001545476861954
@reverseengine
X (formerly Twitter)
Matthew (@embee_research) on X
A collection of incredible (non-corporate) malware analysis and reverse engineering blogs that I have personally enjoyed over the years.
All focused on education and knowledge sharing of malware/RE topics.
[1/14] 🧵
(In no particular order)
#malware #education
All focused on education and knowledge sharing of malware/RE topics.
[1/14] 🧵
(In no particular order)
#malware #education
❤1
MuddyWater’s DarkBit ransomware cracked for free data recovery 😂🫵
https://www.bleepingcomputer.com/news/security/muddywaters-darkbit-ransomware-cracked-for-free-data-recovery
@FUZZ0x
https://www.bleepingcomputer.com/news/security/muddywaters-darkbit-ransomware-cracked-for-free-data-recovery
@FUZZ0x
BleepingComputer
MuddyWater’s DarkBit ransomware cracked for free data recovery
Cybersecurity firm Profero cracked the encryption of the DarkBit ransomware gang's encryptors, allowing them to recover a victim's files for free without paying a ransom.
❤1
Adaptix C2
https://github.com/Adaptix-Framework/Extension-Kit
Blogs:
https://adaptix-framework.gitbook.io/adaptix-framework/blogs
https://github.com/Adaptix-Framework/AdaptixC2
Document:
https://adaptix-framework.gitbook.io/adaptix-framework
@reverseengine
https://github.com/Adaptix-Framework/Extension-Kit
Blogs:
https://adaptix-framework.gitbook.io/adaptix-framework/blogs
https://github.com/Adaptix-Framework/AdaptixC2
sudo apt install mingw-w64 make
wget https://go.dev/dl/go1.24.4.linux-amd64.tar.gz -O /tmp/go1.24.4.linux-amd64.tar.gz
sudo rm -rf /usr/local/go /usr/local/bin/go
sudo tar -C /usr/local -xzf /tmp/go1.24.4.linux-amd64.tar.gz
sudo ln -s /usr/local/go/bin/go /usr/local/bin/go
sudo apt install gcc g++ build-essential cmake libssl-dev qt6-base-dev qt6-websockets-dev qt6-declarative-dev
git clone https://github.com/Adaptix-Framework/AdaptixC2.git
cd AdaptixC2
make server
make extenders
make client
cd dist
chmod +x ssl_gen.sh
./ssl_gen.sh
./adaptixserver -profile profile.json
./AdaptixClient
Document:
https://adaptix-framework.gitbook.io/adaptix-framework
@reverseengine
GitHub
GitHub - Adaptix-Framework/Extension-Kit: AdaptixFramework Extension Kit
AdaptixFramework Extension Kit. Contribute to Adaptix-Framework/Extension-Kit development by creating an account on GitHub.
❤1
Linux Rootkit Malware
https://www.fortinet.com/blog/threat-research/deep-dive-into-a-linux-rootkit-malware?utm_source=chatgpt.com
@reverseengine
https://www.fortinet.com/blog/threat-research/deep-dive-into-a-linux-rootkit-malware?utm_source=chatgpt.com
@reverseengine
Fortinet Blog
Deep Dive Into a Linux Rootkit Malware
An in-depth analysis of how a remote attacker deployed a rootkit and a user-space binary file by executing a shell noscript.…
❤1
Rootkit Technique to Hook the SSDT via Alt Syscalls
https://fluxsec.red/hells-hollow-a-new-SSDT-hooking-technique-with-alt-syscalls-rootkit
Poc: https://github.com/0xflux/Hells-Hollow
@reverseengine
https://fluxsec.red/hells-hollow-a-new-SSDT-hooking-technique-with-alt-syscalls-rootkit
Poc: https://github.com/0xflux/Hells-Hollow
@reverseengine
fluxsec.red
SSDT Hooking via Alt Syscalls for ETW Evasion
Discover how Hells Hollow introduces a novel SSDT hook primitive in Rust by manipulating the kernel’s Alt Syscalls mechanism—enabling ETW bypass, return-value patching, and PatchGuard-resistant rootkit capabilities on Windows 11. Deep dive with POC code and…
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Kill EDR Processes Permanently
User-Mode Code and Its Rootkit
https://github.com/SaadAhla/dark-kill
@reverseengine
User-Mode Code and Its Rootkit
https://github.com/SaadAhla/dark-kill
@reverseengine
❤1
Root Shell on Credit Card Terminal
Reverse Engineer Payment card Terminals
https://stefan-gloor.ch/yomani-hack
@reverseengine
Reverse Engineer Payment card Terminals
https://stefan-gloor.ch/yomani-hack
@reverseengine
👍7
تمام اموزشات جنبه ی آموزشی دارن و هرگونه استفاده نادرست مسئولیتش با خودتونه لطفا درست استفاده کنید
All training is for educational purposes only and any misuse is your responsibility. Please use it correctly.
All training is for educational purposes only and any misuse is your responsibility. Please use it correctly.
❤6
A .NET Assembly Tracer Using Harmony for Runtime Method Interception
https://github.com/eversinc33/NetRunner
@reverseengine
https://github.com/eversinc33/NetRunner
@reverseengine
GitHub
GitHub - eversinc33/NetRunner: A .NET assembly tracer using Harmony for runtime method interception.
A .NET assembly tracer using Harmony for runtime method interception. - eversinc33/NetRunner
❤1
❤1
Streamlining Vulnerability Research with the Idalib Rust Bindings for IDA 9.2
https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
@reverseengine
https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
@reverseengine
Hex-Rays
Streamlining Vulnerability Research with the idalib Rust Bindings for IDA 9.2
Discover updated IDA Pro 9.2 plugins—rhabdomancer, haruspex, and augur—built with Rust to speed reverse engineering and uncover real-world vulnerabilities.
❤1
An introduction to reverse engineering .NET AOT applications
https://harfanglab.io/en/insidethelab/reverse-engineering-ida-pro-aot-net
@reverseengine
https://harfanglab.io/en/insidethelab/reverse-engineering-ida-pro-aot-net
@reverseengine
❤1
Learning Binary Ninja for Reverse Engineering - Scripting Basics and More Part 1
https://www.youtube.com/watch?v=RVyZBqjLrE0
@reverseengine
https://www.youtube.com/watch?v=RVyZBqjLrE0
@reverseengine
YouTube
Learning Binary Ninja for Reverse Engineering - Scripting Basics and More Part 1
Twitter: https://twitter.com/ficti0n
Web: http://cclabs.io
https://console-cowboys.blogspot.com/
This video goes over learning how to use binary ninja for noscripting
Web: http://cclabs.io
https://console-cowboys.blogspot.com/
This video goes over learning how to use binary ninja for noscripting
❤1
بخش چهارم بافر اورفلو
توضیح heap overflow
هیپ جایی که برای تخصیص حافظه پویا با malloc calloc یا new
heap overflow زمانی رخ میده که داده ای زیاد در بلاک های heap نوشته بشه
متادیتای allocator یا بلاک های همجوار رو خراب میکنه
خطاهای heap معمولا با کرش در توابع libc یا هنگام free کردن حافظه دیده میشن و ردگیری اونها با tools مثل valgrind یا heap debugger مفیده
کد هیپ
در این کد یک بلوک روی heap اختصاص داده شده و بعد با memset مقدار بیشتری از اندازه نوشته میشه
هدف دیدن خطا در زمان free یا گزارش valgrind هست
کد هیپ فایل any_heap.c:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *p = malloc(32);
if (!p) return 1;
printf("allocated 32 bytes on heap\n");
/* intentionally overflow the heap block for any_heap
do not use this pattern in real code */
memset(p, 'A', 64);
free(p);
printf("freed block\n");
return 0;
}
دستورات اجرا و بررسی heap
از valgrind یا malloc debug استفاده کنید تا متادیتا یا خطاها رو ببینید
gcc -g any_heap.c -o any_heap
valgrind --leak-check=full ./
any_heap
# یا اجرا در محیطی با malloc debug فعال
نکات که هنگام نوشتن کد باید بدونیم خطاهای هیپ ممکنه فوری کرش نکنن و اغلب در زمان free یا عملیات بعدی ظاهر میشن
از ابزارهایی مثل valgrind یا malloc debug برای ردگیری استفاده کنید
Part 4 Buffer Overflow
Heap Overflow Explanation
Heap where to allocate dynamic memory with malloc calloc or new
Heap overflow occurs when too much data is written to heap blocks
Corrupts allocator metadata or adjacent blocks
Heap errors are usually seen with crashes in libc functions or when freeing memory and are useful to trace with tools like valgrind or heap debugger
Heap Code
In this code, a block is allocated on the heap and then written with memset more than the size
The goal is to see the error at free time or in valgrind reports
Heap Code File any_heap.c:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *p = malloc(32);
if (!p) return 1;
printf("allocated 32 bytes on heap\n");
/* intentionally overflow the heap block for any_heap
do not use this pattern in real code */
memset(p, 'A', 64);
free(p);
printf("freed block\n");
return 0;
}
Heap execution and inspection commands
Use valgrind or malloc debug to see metadata or errors
gcc -g any_heap.c -o any_heap
valgrind --leak-check=full ./
any_heap
# or run in an environment with malloc debug enabled
Things to know when writing code Heap errors may not crash immediately and often appear during free or subsequent operations
Use tools like valgrind or malloc debug for tracing
@reverseengine
❤1
Binary Exploitation (اکسپلویت باینری)
یعنی پیدا کردن و سواستفاده از باگها یا ضعفهای امنیتی داخل برنامههای باینری Executable ها برای تغییر جریان اجرای برنامه یا اجرای کد دلخواه مهاجم
تعریف سادهتر:
فرض کنید یه برنامهی C دارید که ورودی کاربر رو بدون بررسی میگیره و توی یه بافر کپی میکنه اگه بیشتر از ظرفیت بافر داده بدید میتونید داده هاتون رو توی قسمت های مهم حافظه بنویسید و برنامه رو مجبور کنید کاری که شما میخاید انجام بده
به این میگن Binary Exploitation یعنی استفاده از باگ های حافظه یا منطقی برای گرفتن کنترل Execution
🧱 ساختار پایهای حافظه فرایند:
برای درک Binary Exploitation باید با ساختار حافظه یه برنامه اشنا باشید:
┌───────────────┐ ← آدرسهای بالا
│ Stack │ ← شامل متغیرهای لوکال، Return Addressها
├───────────────┤
│ Heap │ ← شامل آبجکتهای داینامیک (malloc/new)
├───────────────┤
│ BSS & Data │ ← متغیرهای global/static
├───────────────┤
│ Text (.text) │ ← کد برنامه (read-only)
└───────────────┘ ← آدرسهای پایین
اکسپلویت معمولا توی Stack یا Heap اتفاق میوفته
🧨 مهمترین نوع باگها در Binary Exploitation
نوع آسیب پذیری:
Buffer Overflow
نوشتن داده بیش از حد مجاز داخل بافر میتونه Return Address رو overwrite کنه
Stack-based Overflow Overflow
توی استک معمولا برای کنترل EIP/RIP استفاده میشه
Heap Overflow
اورفلو توی Heap باعث خرابی ساختار های malloc میشه
Use-After-Free
استفاده از اشاره گر بعد از free کردن باعث کنترل حافظه آزاد شده میشه
Format String Bug
استفاده ناامن از printf میتونه memory leak یا write بده
Integer Overflow/Underflow
باعث خطا در تخصیص حافظه یا bypass کردن چک ها میشه
Double Free
آزاد کردن یک pointer دوبار منجر به corruption توی heap میشه
🧭 مراحل کلی Binary Exploitation:
کرش ایجاد کنید Bug Trigger:
با ورودی خاص باعث کرش برنامه شید
مثلا با یک رشته خیلی بلند بافر رو سرریز کنید
باگ رو آنالیز کنید:
از gdb, pwndbg, gef, یا radare2 استفاده کنید
بفهم چی دقیقا overwrite شده چه رجیستر هایی قابل کنترل هستن و جریان اجرای برنامه چطوریه
لیک اطلاعات امنیتی:
برای بایپس کردن ASLR یا PIE باید آدرس ها رو leak کنید
مثلا از format string استفاده میکنید تا pointer ها رو چاپ کنید
ساخت Payload Exploit:
مثلا ROP chain یا Shellcode بسازید
با دقت Return Address رو به گجتها یا shellcode خودتون تغییر بدید
بایپس کردن Protections:
مرورگرها و باینریهای مدرن محافظتهایی دارن مثل:
ASLR
آدرس ها تصادفی میشن باید leak بگیری
NX / DEP
استک اجرایی نیست باید ROP استفاده کنید
Canary
محافظت در برابر overflow باید نشتش بدید یا دورش بزنید
PIE / RELRO
سختتر کردن کنترل GOT/PLT
گرفتن کنترل نهایی:
معمولا exploit به یکی از این ها ختم میشه:
اجرای Shellcode و گرفتن شل 🐚
اجرای ROP chain برای اجرای دستورات سیستم
تغییر رفتار برنامه به نفع مهاجم
🧰 ابزارهای مهم در Binary Exploitation
ابزارهای پرکاربرد:
gdb + pwndbg یا gef دیباگ و آنالیز کرش و حافظه
radare2, Ghidra, IDA Pro مهندسی معکوس باینری
ROPgadget, ROPPER پیدا کردن گجتهای ROP
pwntools ساخت سریع اکسپلویت با پایتون
angr, Qiling تحلیل سمبولیک یا امولیشن پیشرفته
checksec بررسی محافظت های باینری
🧪 مثال خیلی ساده Stack Overflow کلاسیک
کد آسیبپذیر:
اگه توی ورودی بیشتر از 64 بایت بدید میتونی Return Address رو overwrite کنید و برنامه رو به جای برگشت به main بفرستید روی آدرس shellcode خودتون
Binary Exploitation
It means finding and exploiting bugs or security weaknesses in binary executable programs to change the flow of program execution or execute the attacker's desired code
Simpler definition:
Suppose you have a C program that takes user input without checking and copies it into a buffer. If you give it more than the buffer capacity, you can write your data into important parts of memory and force the program to do what you want
This is called Binary Exploitation, which means using memory or logic bugs to take control of Execution
🧱 Basic Structure of Process Memory:
To understand Binary Exploitation, you need to be familiar with the memory structure of a program:
یعنی پیدا کردن و سواستفاده از باگها یا ضعفهای امنیتی داخل برنامههای باینری Executable ها برای تغییر جریان اجرای برنامه یا اجرای کد دلخواه مهاجم
تعریف سادهتر:
فرض کنید یه برنامهی C دارید که ورودی کاربر رو بدون بررسی میگیره و توی یه بافر کپی میکنه اگه بیشتر از ظرفیت بافر داده بدید میتونید داده هاتون رو توی قسمت های مهم حافظه بنویسید و برنامه رو مجبور کنید کاری که شما میخاید انجام بده
به این میگن Binary Exploitation یعنی استفاده از باگ های حافظه یا منطقی برای گرفتن کنترل Execution
🧱 ساختار پایهای حافظه فرایند:
برای درک Binary Exploitation باید با ساختار حافظه یه برنامه اشنا باشید:
┌───────────────┐ ← آدرسهای بالا
│ Stack │ ← شامل متغیرهای لوکال، Return Addressها
├───────────────┤
│ Heap │ ← شامل آبجکتهای داینامیک (malloc/new)
├───────────────┤
│ BSS & Data │ ← متغیرهای global/static
├───────────────┤
│ Text (.text) │ ← کد برنامه (read-only)
└───────────────┘ ← آدرسهای پایین
اکسپلویت معمولا توی Stack یا Heap اتفاق میوفته
🧨 مهمترین نوع باگها در Binary Exploitation
نوع آسیب پذیری:
Buffer Overflow
نوشتن داده بیش از حد مجاز داخل بافر میتونه Return Address رو overwrite کنه
Stack-based Overflow Overflow
توی استک معمولا برای کنترل EIP/RIP استفاده میشه
Heap Overflow
اورفلو توی Heap باعث خرابی ساختار های malloc میشه
Use-After-Free
استفاده از اشاره گر بعد از free کردن باعث کنترل حافظه آزاد شده میشه
Format String Bug
استفاده ناامن از printf میتونه memory leak یا write بده
Integer Overflow/Underflow
باعث خطا در تخصیص حافظه یا bypass کردن چک ها میشه
Double Free
آزاد کردن یک pointer دوبار منجر به corruption توی heap میشه
🧭 مراحل کلی Binary Exploitation:
کرش ایجاد کنید Bug Trigger:
با ورودی خاص باعث کرش برنامه شید
مثلا با یک رشته خیلی بلند بافر رو سرریز کنید
باگ رو آنالیز کنید:
از gdb, pwndbg, gef, یا radare2 استفاده کنید
بفهم چی دقیقا overwrite شده چه رجیستر هایی قابل کنترل هستن و جریان اجرای برنامه چطوریه
لیک اطلاعات امنیتی:
برای بایپس کردن ASLR یا PIE باید آدرس ها رو leak کنید
مثلا از format string استفاده میکنید تا pointer ها رو چاپ کنید
ساخت Payload Exploit:
مثلا ROP chain یا Shellcode بسازید
با دقت Return Address رو به گجتها یا shellcode خودتون تغییر بدید
بایپس کردن Protections:
مرورگرها و باینریهای مدرن محافظتهایی دارن مثل:
ASLR
آدرس ها تصادفی میشن باید leak بگیری
NX / DEP
استک اجرایی نیست باید ROP استفاده کنید
Canary
محافظت در برابر overflow باید نشتش بدید یا دورش بزنید
PIE / RELRO
سختتر کردن کنترل GOT/PLT
گرفتن کنترل نهایی:
معمولا exploit به یکی از این ها ختم میشه:
اجرای Shellcode و گرفتن شل 🐚
اجرای ROP chain برای اجرای دستورات سیستم
تغییر رفتار برنامه به نفع مهاجم
🧰 ابزارهای مهم در Binary Exploitation
ابزارهای پرکاربرد:
gdb + pwndbg یا gef دیباگ و آنالیز کرش و حافظه
radare2, Ghidra, IDA Pro مهندسی معکوس باینری
ROPgadget, ROPPER پیدا کردن گجتهای ROP
pwntools ساخت سریع اکسپلویت با پایتون
angr, Qiling تحلیل سمبولیک یا امولیشن پیشرفته
checksec بررسی محافظت های باینری
🧪 مثال خیلی ساده Stack Overflow کلاسیک
کد آسیبپذیر:
#include <stdio.h>
#include <string.h>
void vuln() {
char buf[64];
gets(buf); // ❌ ناامن
printf("You said: %s\n", buf);
}
int main() {
vuln();
return 0;
}
اگه توی ورودی بیشتر از 64 بایت بدید میتونی Return Address رو overwrite کنید و برنامه رو به جای برگشت به main بفرستید روی آدرس shellcode خودتون
Binary Exploitation
It means finding and exploiting bugs or security weaknesses in binary executable programs to change the flow of program execution or execute the attacker's desired code
Simpler definition:
Suppose you have a C program that takes user input without checking and copies it into a buffer. If you give it more than the buffer capacity, you can write your data into important parts of memory and force the program to do what you want
This is called Binary Exploitation, which means using memory or logic bugs to take control of Execution
🧱 Basic Structure of Process Memory:
To understand Binary Exploitation, you need to be familiar with the memory structure of a program:
❤3