mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
160 lines
11 KiB
Markdown
160 lines
11 KiB
Markdown
# Κοινές API που χρησιμοποιούνται σε κακόβουλο λογισμικό
|
||
|
||
<details>
|
||
|
||
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
Άλλοι τρόποι υποστήριξης του HackTricks:
|
||
|
||
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
|
||
|
||
</details>
|
||
|
||
**Try Hard Security Group**
|
||
|
||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||
|
||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||
|
||
***
|
||
|
||
## Γενικά
|
||
|
||
### Δικτύωση
|
||
|
||
| 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 μέσα σε άλλη διεργασία
|
||
|
||
1. Εντοπισμός της διεργασίας για την ενσωμάτωση του κακόβουλου DLL: CreateToolhelp32Snapshot, Process32First, Process32Next
|
||
2. Άνοιγμα της διεργασίας: GetModuleHandle, GetProcAddress, OpenProcess
|
||
3. Εγγραφή του διαδρόμου προς το DLL μέσα στη διεργασία: VirtualAllocEx, WriteProcessMemory
|
||
4. Δημιουργία ενός νήματος στη διεργασία που θα φορτώσει το κακόβουλο DLL: CreateRemoteThread, LoadLibrary
|
||
|
||
Άλλες συναρτήσεις που μπορούν να χρησιμοποιηθούν: NTCreateThreadEx, RtlCreateUserThread
|
||
|
||
### Αντανάκλαστη Ενσωμάτωση DLL
|
||
|
||
Φόρτωση ενός κακόβουλου DLL χωρίς να καλούνται κανονικές κλήσεις API των Windows.\
|
||
Το DLL αντιστοιχίζεται μέσα σε μια διεργασία, θα επιλύσει τις διευθύνσεις εισαγωγής, θα διορθώσει τις ανακατασκευές και θα καλέσει τη λειτουργία DllMain.
|
||
|
||
### Απαγωγή Νήματος
|
||
|
||
Εύρεση ενός νήματος από μια διεργασία και κάντε το να φορτώσει ένα κακόβουλο DLL
|
||
|
||
1. Εύρεση ενός στόχου νήματος: CreateToolhelp32Snapshot, Thread32First, Thread32Next
|
||
2. Άνοιγμα του νήματος: OpenThread
|
||
3. Αναστολή του νήματος: SuspendThread
|
||
4. Εγγραφή του διαδρόμου προς το κακόβουλο DLL μέσα στη διεργασία-θύμα: VirtualAllocEx, WriteProcessMemory
|
||
5. Επανέναρξη του νήματος που φορτώνει τη βιβλιοθήκη: ResumeThread
|
||
|
||
### Ενσωμάτωση PE
|
||
|
||
Ενσωμάτωση Φορητής Εκτέλεσης: Το εκτελέσιμο θα γραφτεί στη μνήμη της διεργασίας-θύματος και θα εκτελεστεί από εκεί.
|
||
|
||
### Άδεια Διαδικασίας
|
||
|
||
Το κακόβουλο λογισμικό θα αποσυνδέσει το νόμιμο κώδικα από τη μνήμη της διεργασίας και θα φορτώσει ένα κακόβουλο δυαδικό
|
||
|
||
1. Δημιουργία νέας διεργασίας: CreateProcess
|
||
2. Αποσύνδεση της μνήμης: ZwUnmapViewOfSection, NtUnmapViewOfSection
|
||
3. Εγγραφή του κακόβουλου δυαδικού στη μνήμη της διεργασίας: VirtualAllocEc, WriteProcessMemory
|
||
4. Ορισμός του σημείου εισόδου και εκτέλεση: SetThreadContext, ResumeThread
|
||
|
||
## Αγκάλη
|
||
|
||
* Το **SSDT** (**Πίνακας Περιγραφής Υπηρεσιών Συστήματος**) δείχνει σε λειτουργίες πυρήνα (ntoskrnl.exe) ή οδηγού GUI (win32k.sys) ώστε οι διεργασίες χρήστη να μπορούν να καλέσουν αυτές τις λειτουργίες.
|
||
* Ένα rootkit μπορεί να τροποποιήσει αυτούς τους δείκτες σε διευθύνσεις που ελέγχει
|
||
* Τα **IRP** (**Πακέτα Αιτημάτων I/O**) μεταφέρουν κομμάτια δεδομένων από ένα στοιχείο σε ένα άλλο. Σχεδόν όλα στον πυρήνα χρησιμοποιούν IRPs και κάθε αντικείμενο συσκευής έχει τον δικό του πίνακα λειτουργιών που μπορεί να αγκιλωθεί: DKOM (Άμεση Παραβίαση Αντικειμένου Πυρήνα)
|
||
* Ο **IAT** (**Πίνακας Διεύθυνσης Εισαγωγής**) είναι χρήσιμος για την επίλυση εξαρτήσεων. Είναι δυνατό να αγκιλωθεί αυτός ο πίνακας για να απαγάγει τον κώδικα που θα κληθεί.
|
||
* **EAT** (**Πίνακας Διεύθυνσης Εξαγωγής**) Hooks. Αυτά τα hooks μπορούν να γίνουν από το **userland**. Ο στόχος είναι να γίνει αγκίλωση εξαγόμενων λειτουργιών από DLLs.
|
||
* **Inline Hooks**: Αυτού του τύπου είναι δύσκολο να επιτευχθούν. Αυτό περιλαμβάνει την τροποποίηση του
|
||
* **Μοιραστείτε τα κόλπα σας στο χάκινγκ υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
|
||
|
||
</details>
|