hacktricks/forensics/basic-forensic-methodology/malware-analysis.md
2024-02-11 01:46:25 +00:00

284 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Analiza złośliwego oprogramowania
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
## Oszustwa dotyczące forensyki
[https://www.jaiminton.com/cheatsheet/DFIR/#](https://www.jaiminton.com/cheatsheet/DFIR/)
## Usługi online
* [VirusTotal](https://www.virustotal.com/gui/home/upload)
* [HybridAnalysis](https://www.hybrid-analysis.com)
* [Koodous](https://koodous.com)
* [Intezer](https://analyze.intezer.com)
* [Any.Run](https://any.run/)
## Narzędzia offline do wykrywania i usuwania wirusów
### Yara
#### Instalacja
```bash
sudo apt-get install -y yara
```
#### Przygotuj reguły
Użyj tego skryptu do pobrania i połączenia wszystkich reguł malware yara z githuba: [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\
Utwórz katalog _**rules**_ i wykonaj go. Spowoduje to utworzenie pliku o nazwie _**malware\_rules.yar**_, który zawiera wszystkie reguły yara dla malware.
```bash
wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
mkdir rules
python malware_yara_rules.py
```
#### Skanowanie
To begin the malware analysis process, the first step is to scan the suspicious file or system for any signs of malicious activity. This can be done using various tools and techniques, such as antivirus software, sandboxing, and network traffic analysis.
##### Antivirus Scan
Running an antivirus scan is a quick and easy way to check if a file or system is infected with known malware. Antivirus software uses a database of known malware signatures to identify and remove malicious files. It is important to keep the antivirus software up to date to ensure it can detect the latest threats.
##### Sandbox Analysis
Sandboxing involves running the suspicious file or program in a controlled environment to observe its behavior. This can help identify any malicious activities, such as file modifications, network connections, or system changes. Sandboxing tools provide a safe and isolated environment to analyze potentially dangerous files without risking the host system.
##### Network Traffic Analysis
Analyzing network traffic can provide valuable insights into the behavior of malware. By monitoring network connections and traffic patterns, it is possible to identify any suspicious or malicious activities. Tools like Wireshark can be used to capture and analyze network packets, allowing for the detection of communication with malicious servers or the exfiltration of sensitive data.
##### File Analysis
Analyzing the suspicious file itself can reveal important information about its nature and purpose. This can be done using various techniques, such as static analysis and dynamic analysis.
- Static Analysis: Involves examining the file's structure, metadata, and code without executing it. This can include analyzing file headers, strings, and embedded resources. Tools like PEiD and ExifTool can be used for static analysis.
- Dynamic Analysis: Involves executing the file in a controlled environment and monitoring its behavior. This can include observing system calls, file system modifications, and network connections. Tools like Process Monitor and Process Explorer can be used for dynamic analysis.
By performing these scans and analyses, it is possible to gather valuable information about the malware, such as its behavior, capabilities, and potential impact on the system. This information can then be used to develop appropriate mitigation strategies and countermeasures.
```bash
yara -w malware_rules.yar image #Scan 1 file
yara -w malware_rules.yar folder #Scan the whole folder
```
#### YaraGen: Sprawdzanie złośliwego oprogramowania i tworzenie reguł
Możesz użyć narzędzia [**YaraGen**](https://github.com/Neo23x0/yarGen), aby generować reguły yara na podstawie pliku binarnego. Sprawdź te samouczki: [**Część 1**](https://www.nextron-systems.com/2015/02/16/write-simple-sound-yara-rules/), [**Część 2**](https://www.nextron-systems.com/2015/10/17/how-to-write-simple-but-sound-yara-rules-part-2/), [**Część 3**](https://www.nextron-systems.com/2016/04/15/how-to-write-simple-but-sound-yara-rules-part-3/)
```bash
python3 yarGen.py --update
python3.exe yarGen.py --excludegood -m ../../mals/
```
### ClamAV
#### Instalacja
Aby zainstalować ClamAV, wykonaj następujące kroki:
1. Otwórz terminal i wpisz poniższą komendę, aby zainstalować ClamAV:
```
sudo apt-get install clamav
```
2. Po zakończeniu instalacji, wykonaj poniższą komendę, aby zaktualizować bazy danych wirusów:
```
sudo freshclam
```
3. Teraz możesz przeskanować pliki na swoim systemie, używając poniższej komendy:
```
clamscan -r /ścieżka/do/katalogu
```
Gdzie `/ścieżka/do/katalogu` to ścieżka do katalogu, który chcesz przeskanować. Możesz również użyć opcji `-r` w celu przeskanowania wszystkich plików rekursywnie.
Po zakończeniu skanowania, ClamAV wyświetli raport z wykrytymi wirusami lub oznaczy pliki jako bezpieczne.
#### Aktualizacja baz danych wirusów
Aby zaktualizować bazy danych wirusów ClamAV, wykonaj poniższe kroki:
1. Otwórz terminal i wpisz poniższą komendę, aby zaktualizować bazy danych:
```
sudo freshclam
```
2. Po zakończeniu aktualizacji, bazy danych wirusów będą zaktualizowane i gotowe do użycia.
#### Automatyczna aktualizacja baz danych wirusów
Aby skonfigurować automatyczną aktualizację baz danych wirusów ClamAV, wykonaj poniższe kroki:
1. Otwórz terminal i wpisz poniższą komendę, aby edytować plik konfiguracyjny:
```
sudo nano /etc/clamav/freshclam.conf
```
2. Znajdź linię `#Example` i usuń znak `#` na początku linii, aby odkomentować tę linię.
3. Zapisz plik i zamknij edytor.
4. Teraz możesz skonfigurować harmonogram automatycznej aktualizacji, wykonując poniższą komendę:
```
sudo systemctl enable --now clamav-freshclam
```
Po wykonaniu tych kroków, bazy danych wirusów ClamAV będą automatycznie aktualizowane zgodnie z harmonogramem.
```
sudo apt-get install -y clamav
```
#### Skanowanie
To begin the malware analysis process, the first step is to scan the suspicious file or system for any signs of malicious activity. This can be done using various tools and techniques, such as antivirus software, sandboxing, and network traffic analysis.
##### Antivirus Scan
Running an antivirus scan is a quick and easy way to check if a file or system is infected with known malware. Antivirus software uses a database of known malware signatures to identify and remove malicious files. It is important to keep the antivirus software up to date to ensure it can detect the latest threats.
##### Sandbox Analysis
Sandboxing involves running the suspicious file or program in a controlled environment to observe its behavior. This can help identify any malicious activities, such as file modifications, network connections, or system changes. Sandboxing tools provide a safe and isolated environment to analyze potentially dangerous files without risking the host system.
##### Network Traffic Analysis
Analyzing network traffic can provide valuable insights into the behavior of malware. By monitoring network connections and traffic patterns, it is possible to identify any suspicious or malicious activities. Tools like Wireshark can be used to capture and analyze network packets, allowing for the detection of communication with malicious servers or the exfiltration of sensitive data.
##### File Analysis
Analyzing the suspicious file itself can reveal important information about its nature and purpose. This can be done using various techniques, such as static analysis and dynamic analysis.
- Static Analysis: Involves examining the file's structure, metadata, and code without executing it. This can include checking file headers, strings, and embedded resources. Tools like PEiD and ExifTool can be used for static analysis.
- Dynamic Analysis: Involves executing the file in a controlled environment and monitoring its behavior. This can include observing system calls, file system modifications, and network connections. Tools like Process Monitor and Process Explorer can be used for dynamic analysis.
By performing a thorough scan of the suspicious file or system, it is possible to gather valuable information about the malware and its capabilities. This information can then be used to further analyze and mitigate the threat.
```bash
sudo freshclam #Update rules
clamscan filepath #Scan 1 file
clamscan folderpath #Scan the whole folder
```
### [Capa](https://github.com/mandiant/capa)
**Capa** wykrywa potencjalnie złośliwe **zdolności** w plikach wykonywalnych: PE, ELF, .NET. Znajdzie takie rzeczy jak taktyki Att\&ck lub podejrzane zdolności, takie jak:
* sprawdzanie błędu OutputDebugString
* uruchamianie jako usługa
* tworzenie procesu
Pobierz go z [**repozytorium Github**](https://github.com/mandiant/capa).
### IOC
IOC oznacza Indicator Of Compromise. IOC to zestaw **warunków identyfikujących** potencjalnie niechciane oprogramowanie lub potwierdzone **złośliwe oprogramowanie**. Zespoły Blue używają tego rodzaju definicji do **wyszukiwania tego rodzaju złośliwych plików** w swoich **systemach** i **sieciach**.\
Dzielenie się tymi definicjami jest bardzo przydatne, ponieważ gdy złośliwe oprogramowanie zostanie zidentyfikowane na komputerze i utworzony zostanie IOC dla tego złośliwego oprogramowania, inne zespoły Blue mogą go użyć do szybszego identyfikowania złośliwego oprogramowania.
Narzędzie do tworzenia lub modyfikowania IOC to [**Edytor IOC**](https://www.fireeye.com/services/freeware/ioc-editor.html)**.**\
Możesz użyć narzędzi takich jak [**Redline**](https://www.fireeye.com/services/freeware/redline.html), aby **wyszukiwać zdefiniowane IOCs na urządzeniu**.
### Loki
[**Loki**](https://github.com/Neo23x0/Loki) to skaner dla prostych wskaźników kompromitacji.\
Wykrywanie opiera się na czterech metodach wykrywania:
```
1. File Name IOC
Regex match on full file path/name
2. Yara Rule Check
Yara signature matches on file data and process memory
3. Hash Check
Compares known malicious hashes (MD5, SHA1, SHA256) with scanned files
4. C2 Back Connect Check
Compares process connection endpoints with C2 IOCs (new since version v.10)
```
### Linux Malware Detect
[**Linux Malware Detect (LMD)**](https://www.rfxn.com/projects/linux-malware-detect/) to skaner złośliwego oprogramowania dla systemu Linux, wydany na licencji GNU GPLv2, który został zaprojektowany w oparciu o zagrożenia występujące w środowiskach hostowanych współdzielonych. Wykorzystuje dane dotyczące zagrożeń z systemów wykrywania włamań na krawędzi sieci w celu wykrywania aktywnie wykorzystywanego złośliwego oprogramowania i generowania sygnatur do jego wykrywania. Dodatkowo, dane dotyczące zagrożeń są również pozyskiwane z zgłoszeń użytkowników za pomocą funkcji sprawdzania LMD oraz z zasobów społeczności zajmującej się złośliwym oprogramowaniem.
### rkhunter
Narzędzia takie jak [**rkhunter**](http://rkhunter.sourceforge.net) mogą być używane do sprawdzania systemu plików pod kątem możliwych **rootkitów** i złośliwego oprogramowania.
```bash
sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--skip-keypress]
```
### FLOSS
[**FLOSS**](https://github.com/mandiant/flare-floss) to narzędzie, które próbuje znaleźć zaszyfrowane ciągi wewnątrz plików wykonywalnych, używając różnych technik.
### PEpper
[PEpper](https://github.com/Th3Hurrican3/PEpper) sprawdza podstawowe informacje wewnątrz pliku wykonywalnego (dane binarne, entropia, adresy URL i IP, niektóre reguły yara).
### PEstudio
[PEstudio](https://www.winitor.com/download) to narzędzie, które pozwala uzyskać informacje o plikach wykonywalnych systemu Windows, takie jak importy, eksporty, nagłówki, ale także sprawdza VirusTotal i znajduje potencjalne techniki Att\&ck.
### Detect It Easy(DiE)
[**DiE**](https://github.com/horsicq/Detect-It-Easy/) to narzędzie do wykrywania, czy plik jest **zaszyfrowany**, a także znajduje **pakery**.
### NeoPI
[**NeoPI**](https://github.com/CiscoCXSecurity/NeoPI) to skrypt Pythona, który używa różnych **metod statystycznych** do wykrywania **zaszyfrowanej** i **zaszyfrowanej** zawartości w plikach tekstowych/skryptowych. NeoPI ma na celu pomóc w **wykrywaniu ukrytego kodu web shell**.
### **php-malware-finder**
[**PHP-malware-finder**](https://github.com/nbs-system/php-malware-finder) robi wszystko, co w jego mocy, aby wykryć **zaszyfrowany**/**podejrzany kod**, a także pliki używające funkcji **PHP** często używanych w **malware**/webshellach.
### Sygnatury binarne Apple
Podczas sprawdzania próbki **malware** zawsze powinieneś **sprawdzić sygnaturę** binarną, ponieważ **deweloper**, który ją podpisał, może być już **powiązany** z **malware**.
```bash
#Get signer
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
#Check if the apps contents have been modified
codesign --verify --verbose /Applications/Safari.app
#Check if the signature is valid
spctl --assess --verbose /Applications/Safari.app
```
## Techniki wykrywania
### Składanie plików
Jeśli wiesz, że pewien folder zawierający **pliki** serwera internetowego był **ostatnio zaktualizowany w pewnej dacie**, **sprawdź** datę utworzenia i modyfikacji wszystkich **plików** na serwerze i jeśli jakakolwiek data jest **podejrzana**, sprawdź ten plik.
### Punkty odniesienia
Jeśli pliki w folderze **nie powinny być modyfikowane**, możesz obliczyć **skrót** **oryginalnych plików** w folderze i **porównać** je z **aktualnymi**. Wszelkie zmodyfikowane pliki będą **podejrzane**.
### Analiza statystyczna
Jeśli informacje są zapisywane w logach, możesz **sprawdzić statystyki, takie jak ile razy każdy plik serwera internetowego był odwiedzany, ponieważ jeden z nich może być web shell**.
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>