Common API used in Malware
Last updated
Last updated
Μάθετε και εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε και εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Raw Sockets | WinAPI Sockets |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Registry | File | Service |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
Name |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Function Name | Assembly Instructions |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Έλεγχος αν μια διαδικασία εκτελείται] | |
CreateFileW/A [Έλεγχος αν ένα αρχείο υπάρχει] |
Name | |
---|---|
VirtualAlloc | Δεσμεύει μνήμη (packers) |
VirtualProtect | Αλλάζει άδεια μνήμης (packer που δίνει άδεια εκτέλεσης σε μια ενότητα) |
ReadProcessMemory | Έγχυση σε εξωτερικές διαδικασίες |
WriteProcessMemoryA/W | Έγχυση σε εξωτερικές διαδικασίες |
NtWriteVirtualMemory | |
CreateRemoteThread | Έγχυση DLL/Διαδικασίας... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Function Name |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
GetAsyncKeyState() -- Καταγραφή πλήκτρων
SetWindowsHookEx -- Καταγραφή πλήκτρων
GetForeGroundWindow -- Λάβετε το όνομα του εκτελούμενου παραθύρου (ή της ιστοσελίδας από έναν περιηγητή)
LoadLibrary() -- Εισαγωγή βιβλιοθήκης
GetProcAddress() -- Εισαγωγή βιβλιοθήκης
CreateToolhelp32Snapshot() -- Λίστα εκτελούμενων διαδικασιών
GetDC() -- Στιγμιότυπο οθόνης
BitBlt() -- Στιγμιότυπο οθόνης
InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Πρόσβαση στο Διαδίκτυο
FindResource(), LoadResource(), LockResource() -- Πρόσβαση σε πόρους του εκτελέσιμου
Εκτελέστε μια αυθαίρετη DLL μέσα σε άλλη διαδικασία
Εντοπίστε τη διαδικασία για να εγχύσετε τη κακόβουλη DLL: CreateToolhelp32Snapshot, Process32First, Process32Next
Ανοίξτε τη διαδικασία: GetModuleHandle, GetProcAddress, OpenProcess
Γράψτε τη διαδρομή προς τη DLL μέσα στη διαδικασία: VirtualAllocEx, WriteProcessMemory
Δημιουργήστε ένα νήμα στη διαδικασία που θα φορτώσει τη κακόβουλη DLL: CreateRemoteThread, LoadLibrary
Άλλες συναρτήσεις που μπορείτε να χρησιμοποιήσετε: NTCreateThreadEx, RtlCreateUserThread
Φορτώστε μια κακόβουλη DLL χωρίς να καλέσετε κανονικές κλήσεις API των Windows. Η DLL είναι χαρτογραφημένη μέσα σε μια διαδικασία, θα επιλύσει τις διευθύνσεις εισαγωγής, θα διορθώσει τις μετατοπίσεις και θα καλέσει τη συνάρτηση DllMain.
Βρείτε ένα νήμα από μια διαδικασία και κάντε το να φορτώσει μια κακόβουλη DLL
Βρείτε ένα στοχευμένο νήμα: CreateToolhelp32Snapshot, Thread32First, Thread32Next
Ανοίξτε το νήμα: OpenThread
Αναστείλετε το νήμα: SuspendThread
Γράψτε τη διαδρομή προς τη κακόβουλη DLL μέσα στη διαδικασία του θύματος: VirtualAllocEx, WriteProcessMemory
Επαναφέρετε το νήμα φορτώνοντας τη βιβλιοθήκη: ResumeThread
Εγχυση Εκτελέσιμου: Το εκτελέσιμο θα γραφτεί στη μνήμη της διαδικασίας του θύματος και θα εκτελείται από εκεί.
Το κακόβουλο λογισμικό θα αφαιρέσει τον νόμιμο κώδικα από τη μνήμη της διαδικασίας και θα φορτώσει ένα κακόβουλο δυαδικό αρχείο
Δημιουργήστε μια νέα διαδικασία: CreateProcess
Αφαιρέστε τη μνήμη: ZwUnmapViewOfSection, NtUnmapViewOfSection
Γράψτε το κακόβουλο δυαδικό αρχείο στη μνήμη της διαδικασίας: VirtualAllocEc, WriteProcessMemory
Ορίστε το σημείο εισόδου και εκτελέστε: SetThreadContext, ResumeThread
Ο SSDT (Πίνακας Περιγραφής Υπηρεσιών Συστήματος) δείχνει σε συναρτήσεις πυρήνα (ntoskrnl.exe) ή σε οδηγό GUI (win32k.sys) ώστε οι διαδικασίες χρήστη να μπορούν να καλέσουν αυτές τις συναρτήσεις.
Ένα rootkit μπορεί να τροποποιήσει αυτούς τους δείκτες σε διευθύνσεις που ελέγχει
IRP (Πακέτα Αιτήσεων I/O) μεταφέρουν κομμάτια δεδομένων από ένα συστατικό σε άλλο. Σχεδόν τα πάντα στον πυρήνα χρησιμοποιούν IRPs και κάθε αντικείμενο συσκευής έχει τον δικό του πίνακα συναρτήσεων που μπορεί να συνδεθεί: DKOM (Άμεση Διαχείριση Αντικειμένων Πυρήνα)
Ο IAT (Πίνακας Διευθύνσεων Εισαγωγής) είναι χρήσιμος για την επίλυση εξαρτήσεων. Είναι δυνατή η σύνδεση αυτού του πίνακα προκειμένου να αναληφθεί ο κώδικας που θα κληθεί.
EAT (Πίνακας Διευθύνσεων Εξαγωγής) Hooks. Αυτές οι συνδέσεις μπορούν να γίνουν από userland. Ο στόχος είναι να συνδεθούν οι εξαγόμενες συναρτήσεις από DLLs.
Inline Hooks: Αυτός ο τύπος είναι δύσκολος να επιτευχθεί. Αυτό περιλαμβάνει την τροποποίηση του κώδικα των συναρτήσεων αυτών. Ίσως βάζοντας ένα άλμα στην αρχή τους.
Μάθετε και εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε και εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)