Common API used in Malware
Try Hard Security Group
Γενικά
Δικτύωση
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() |
Κρυπτογράφηση
Όνομα |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Αντι-Ανάλυση/Εικονική Μηχανή
Όνομα Συνάρτησης | Οδηγίες Συναρτήσεων Συναρμολόγησης |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Έλεγχος εάν ένα πρόγραμμα εκτελείται] | |
CreateFileW/A [Έλεγχος εάν υπάρχει ένα αρχείο] |
Αόρατος Λογισμικός
Όνομα | |
---|---|
VirtualAlloc | Εκχώρηση μνήμης (packers) |
VirtualProtect | Αλλαγή δικαιωμάτων μνήμης (packer που δίνει άδεια εκτέλεσης σε μια ενότητα) |
ReadProcessMemory | Ενσωμάτωση σε εξωτερικές διεργασίες |
WriteProcessMemoryA/W | Ενσωμάτωση σε εξωτερικές διεργασίες |
NtWriteVirtualMemory | |
CreateRemoteThread | Ενσωμάτωση DLL/Διεργασίας... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Εκτέλεση
Όνομα Συνάρτησης |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
Διάφορα
GetAsyncKeyState() -- Καταγραφή πλήκτρων
SetWindowsHookEx -- Καταγραφή πλήκτρων
GetForeGroundWindow -- Λήψη ονόματος τρέχοντος παραθύρου (ή της ιστοσελίδας από ένα πρόγραμμα περιήγησης)
LoadLibrary() -- Εισαγωγή βιβλιοθήκης
GetProcAddress() -- Εισαγωγή βιβλιοθήκης
CreateToolhelp32Snapshot() -- Κατάλογος τρέχοντων διεργασιών
GetDC() -- Στιγμιότυπο οθόνης
BitBlt() -- Στιγμιότυπο οθόνης
InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Πρόσβαση στο Internet
FindResource(), LoadResource(), LockResource() -- Πρόσβαση σε πόρους του εκτελέσιμου
Τεχνικές Κακόβουλου Λογισμικού
Ενσωμάτωση DLL
Εκτέλεση ενός αυθαίρετου DLL μέσα σε άλλη διεργασία
Εντοπισμός της διεργασίας για την ενσωμάτωση του κακόβουλου DLL: CreateToolhelp32Snapshot, Process32First, Process32Next
Άνοιγμα της διεργασίας: GetModuleHandle, GetProcAddress, OpenProcess
Εγγραφή του διαδρόμου προς το DLL μέσα στη διεργασία: VirtualAllocEx, WriteProcessMemory
Δημιουργία ενός νήματος στη διεργασία που θα φορτώσει το κακόβουλο DLL: CreateRemoteThread, LoadLibrary
Άλλες συναρτήσεις που μπορούν να χρησιμοποιηθούν: NTCreateThreadEx, RtlCreateUserThread
Αντανάκλαστη Ενσωμάτωση DLL
Φόρτωση ενός κακόβουλου DLL χωρίς να καλούνται κανονικές κλήσεις API των Windows. Το DLL αντιστοιχίζεται μέσα σε μια διεργασία, θα επιλύσει τις διευθύνσεις εισαγωγής, θα διορθώσει τις ανακατασκευές και θα καλέσει τη λειτουργία DllMain.
Απαγωγή Νήματος
Εύρεση ενός νήματος από μια διεργασία και κάντε το να φορτώσει ένα κακόβουλο DLL
Εύρεση ενός στόχου νήματος: CreateToolhelp32Snapshot, Thread32First, Thread32Next
Άνοιγμα του νήματος: OpenThread
Αναστολή του νήματος: SuspendThread
Εγγραφή του διαδρόμου προς το κακόβουλο DLL μέσα στη διεργασία-θύμα: VirtualAllocEx, WriteProcessMemory
Επανέναρξη του νήματος που φορτώνει τη βιβλιοθήκη: ResumeThread
Ενσωμάτωση PE
Ενσωμάτωση Φορητής Εκτέλεσης: Το εκτελέσιμο θα γραφτεί στη μνήμη της διεργασίας-θύματος και θα εκτελεστεί από εκεί.
Άδεια Διαδικασίας
Το κακόβουλο λογισμικό θα αποσυνδέσει το νόμιμο κώδικα από τη μνήμη της διεργασίας και θα φορτώσει ένα κακόβουλο δυαδικό
Δημιουργία νέας διεργασίας: CreateProcess
Αποσύνδεση της μνήμης: ZwUnmapViewOfSection, NtUnmapViewOfSection
Εγγραφή του κακόβουλου δυαδικού στη μνήμη της διεργασίας: VirtualAllocEc, WriteProcessMemory
Ορισμός του σημείου εισόδου και εκτέλεση: SetThreadContext, ResumeThread
Αγκάλη
Το SSDT (Πίνακας Περιγραφής Υπηρεσιών Συστήματος) δείχνει σε λειτουργίες πυρήνα (ntoskrnl.exe) ή οδηγού GUI (win32k.sys) ώστε οι διεργασίες χρήστη να μπορούν να καλέσουν αυτές τις λειτουργίες.
Ένα rootkit μπορεί να τροποποιήσει αυτούς τους δείκτες σε διευθύνσεις που ελέγχει
Τα IRP (Πακέτα Αιτημάτων I/O) μεταφέρουν κομμάτια δεδομένων από ένα στοιχείο σε ένα άλλο. Σχεδόν όλα στον πυρήνα χρησιμοποιούν IRPs και κάθε αντικείμενο συσκευής έχει τον δικό του πίνακα λειτουργιών που μπορεί να αγκιλωθεί: DKOM (Άμεση Παραβίαση Αντικειμένου Πυρήνα)
Ο IAT (Πίνακας Διεύθυνσης Εισαγωγής) είναι χρήσιμος για την επίλυση εξαρτήσεων. Είναι δυνατό να αγκιλωθεί αυτός ο πίνακας για να απαγάγει τον κώδικα που θα κληθεί.
EAT (Πίνακας Διεύθυνσης Εξαγωγής) Hooks. Αυτά τα hooks μπορούν να γίνουν από το userland. Ο στόχος είναι να γίνει αγκίλωση εξαγόμενων λειτουργιών από DLLs.
Inline Hooks: Αυτού του τύπου είναι δύσκολο να επιτευχθούν. Αυτό περιλαμβάνει την τροποποίηση του
Μοιραστείτε τα κόλπα σας στο χάκινγκ υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του GitHub.
Last updated