hacktricks/generic-methodologies-and-resources/basic-forensic-methodology/malware-analysis.md

166 lines
8.6 KiB
Markdown
Raw Normal View History

2024-04-06 18:36:54 +00:00
# 악성코드 분석
{% hint style="success" %}
AWS 해킹 학습 및 실습:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 학습 및 실습: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2024-04-06 18:36:54 +00:00
<details>
2024-04-06 18:36:54 +00:00
<summary>HackTricks 지원</summary>
2024-04-06 18:36:54 +00:00
* [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃헙 레포지토리에 PR을 제출하여 해킹 요령을 공유하세요.
2024-04-06 18:36:54 +00:00
</details>
{% endhint %}
2024-04-06 18:36:54 +00:00
## 포렌식 치트시트
[https://www.jaiminton.com/cheatsheet/DFIR/#](https://www.jaiminton.com/cheatsheet/DFIR/)
## 온라인 서비스
* [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/)
## 오프라인 백신 및 탐지 도구
### Yara
#### 설치
```bash
sudo apt-get install -y yara
```
#### 준비 규칙
2024-04-06 18:36:54 +00:00
이 스크립트를 사용하여 github에서 모든 yara 악성 코드 규칙을 다운로드하고 병합합니다: [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\
_**rules**_ 디렉토리를 만들고 실행하십시오. 이렇게 하면 _**malware\_rules.yar**_이라는 파일이 생성되며 이 파일에는 악성 코드에 대한 모든 yara 규칙이 포함됩니다.
2024-04-06 18:36:54 +00:00
```bash
wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
mkdir rules
python malware_yara_rules.py
```
#### 스캔
```bash
yara -w malware_rules.yar image #Scan 1 file
yara -w malware_rules.yar folder #Scan the whole folder
```
#### YaraGen: 악성코드 확인 및 규칙 생성
툴 [**YaraGen**](https://github.com/Neo23x0/yarGen)을 사용하여 이진 파일로부터 yara 규칙을 생성할 수 있습니다. 다음 튜토리얼을 확인해보세요: [**Part 1**](https://www.nextron-systems.com/2015/02/16/write-simple-sound-yara-rules/), [**Part 2**](https://www.nextron-systems.com/2015/10/17/how-to-write-simple-but-sound-yara-rules-part-2/), [**Part 3**](https://www.nextron-systems.com/2016/04/15/how-to-write-simple-but-sound-yara-rules-part-3/)
2024-04-06 18:36:54 +00:00
```bash
python3 yarGen.py --update
python3.exe yarGen.py --excludegood -m ../../mals/
```
### ClamAV
#### 설치
```
sudo apt-get install -y clamav
```
#### 스캔
```bash
sudo freshclam #Update rules
clamscan filepath #Scan 1 file
clamscan folderpath #Scan the whole folder
```
### [Capa](https://github.com/mandiant/capa)
**Capa**는 실행 파일(PE, ELF, .NET)에서 잠재적으로 악의적인 **기능**을 감지합니다. 따라서 Att\&ck 전술과 같은 것들 또는 의심스러운 기능을 찾을 수 있습니다:
2024-04-06 18:36:54 +00:00
- OutputDebugString 오류 확인
- 서비스로 실행
- 프로세스 생성
2024-04-06 18:36:54 +00:00
[**Github 저장소**](https://github.com/mandiant/capa)에서 받을 수 있습니다.
### IOCs
2024-04-06 18:36:54 +00:00
IOC는 Compromise의 지표(Indicator Of Compromise)를 의미합니다. IOC는 일부 잠재적으로 원치 않는 소프트웨어 또는 확인된 **악성 코드**를 식별하는 **조건들의 집합**입니다. Blue Team은 이러한 정의를 사용하여 **시스템** 및 **네트워크**에서 **이러한 악성 파일을 검색**합니다.\
이러한 정의를 공유하는 것은 매우 유용합니다. 왜냐하면 컴퓨터에서 악성 코드가 식별되고 해당 악성 코드에 대한 IOC가 생성되면, 다른 Blue Team이 해당 악성 코드를 더 빨리 식별할 수 있기 때문입니다.
2024-04-06 18:36:54 +00:00
IOC를 생성하거나 수정하는 도구는 [**IOC Editor**](https://www.fireeye.com/services/freeware/ioc-editor.html)**입니다.**\
[**Redline**](https://www.fireeye.com/services/freeware/redline.html)과 같은 도구를 사용하여 **장치에서 정의된 IOC를 검색**할 수 있습니다.
2024-04-06 18:36:54 +00:00
### Loki
[**Loki**](https://github.com/Neo23x0/Loki)는 간단한 Compromise 지표에 대한 스캐너입니다.\
검출은 네 가지 검출 방법을 기반으로 합니다:
2024-04-06 18:36:54 +00:00
```
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 악성코드 탐지
2024-04-06 18:36:54 +00:00
[**Linux 악성코드 탐지 (LMD)**](https://www.rfxn.com/projects/linux-malware-detect/)는 GNU GPLv2 라이선스 하에 공개된 Linux용 악성코드 스캐너로, 공유 호스팅 환경에서 직면한 위협을 중심으로 설계되었습니다. 네트워크 가장자리 침입 탐지 시스템에서의 위협 데이터를 사용하여 공격 중인 악성코드를 추출하고 탐지를 위한 시그니처를 생성합니다. 또한, 위협 데이터는 LMD 체크아웃 기능과 악성코드 커뮤니티 리소스를 통해 사용자 제출에서 파생됩니다.
2024-04-06 18:36:54 +00:00
### rkhunter
[**rkhunter**](http://rkhunter.sourceforge.net)와 같은 도구는 파일 시스템을 확인하여 가능한 **루트킷**과 악성코드를 확인하는 데 사용될 수 있습니다.
2024-04-06 18:36:54 +00:00
```bash
sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--skip-keypress]
```
### FLOSS
[**FLOSS**](https://github.com/mandiant/flare-floss)는 다양한 기술을 사용하여 실행 파일 내에 난독화된 문자열을 찾으려고 시도하는 도구입니다.
2024-04-06 18:36:54 +00:00
### PEpper
[PEpper](https://github.com/Th3Hurrican3/PEpper)는 실행 파일 내부의 기본적인 내용(이진 데이터, 엔트로피, URL 및 IP, 일부 yara 규칙)을 확인합니다.
2024-04-06 18:36:54 +00:00
### PEstudio
[PEstudio](https://www.winitor.com/download)는 Windows 실행 파일의 정보(임포트, 익스포트, 헤더)를 얻을 수 있도록 해주는 도구이며, 바이러스 토탈을 확인하고 잠재적인 Att\&ck 기술을 찾을 수도 있습니다.
2024-04-06 18:36:54 +00:00
### Detect It Easy(DiE)
[**DiE**](https://github.com/horsicq/Detect-It-Easy/)는 파일이 **암호화**되어 있는지 감지하고 **패커**를 찾는 도구입니다.
2024-04-06 18:36:54 +00:00
### NeoPI
[**NeoPI**](https://github.com/CiscoCXSecurity/NeoPI)는 다양한 **통계적 방법**을 사용하여 텍스트/스크립트 파일 내에 **난독화** 및 **암호화**된 내용을 감지하는 Python 스크립트입니다. NeoPI의 목적은 **숨겨진 웹 쉘 코드**를 감지하는 데 도움을 주는 것입니다.
2024-04-06 18:36:54 +00:00
### **php-malware-finder**
[**PHP-malware-finder**](https://github.com/nbs-system/php-malware-finder)는 **난독화**/**의심스러운 코드** 및 **악성 코드**/**웹 쉘**에서 자주 사용되는 **PHP** 함수를 사용하는 파일을 감지하기 위해 최선을 다합니다.
2024-04-06 18:36:54 +00:00
### Apple Binary Signatures
**악성 코드 샘플**을 확인할 때는 항상 이진 파일의 **서명**을 확인해야 합니다. 서명한 **개발자**가 이미 **악성 코드**와 관련이 있을 수 있습니다.
2024-04-06 18:36:54 +00:00
```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
```
## 탐지 기술
2024-04-06 18:36:54 +00:00
### 파일 쌓기
2024-04-06 18:36:54 +00:00
웹 서버의 **파일들이 포함된 폴더**가 **특정 날짜에 마지막으로 업데이트**된 것을 알고 있다면, **웹 서버의 모든 파일이 생성 및 수정된 날짜**를 **확인**하고 **의심스러운** 날짜가 있는지 확인하십시오.
2024-04-06 18:36:54 +00:00
### 기준선
폴더의 파일이 **수정되지 않아야 하는 경우**, 폴더의 **원본 파일의 해시**를 계산하고 **현재 파일**과 **비교**할 수 있습니다. 수정된 내용은 **의심스러울 것**입니다.
2024-04-06 18:36:54 +00:00
### 통계 분석
정보가 로그에 저장된 경우, 웹 서버의 각 파일이 액세스된 횟수와 같은 **통계를 확인**할 수 있습니다. 웹 쉘은 가장 많이 액세스된 파일 중 하나일 수 있습니다.