mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 22:20:43 +00:00
267 lines
16 KiB
Markdown
267 lines
16 KiB
Markdown
|
# 악성코드 분석
|
|||
|
|
|||
|
<details>
|
|||
|
|
|||
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
|||
|
|
|||
|
HackTricks를 지원하는 다른 방법:
|
|||
|
|
|||
|
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
|||
|
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
|
|||
|
* [**The PEASS Family**](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** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)를 **팔로우**하세요.
|
|||
|
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
## 포렌식 치트시트
|
|||
|
|
|||
|
[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
|
|||
|
```
|
|||
|
#### 규칙 준비
|
|||
|
|
|||
|
다음 스크립트를 사용하여 깃허브에서 모든 악성코드 yara 규칙을 다운로드하고 병합하세요: [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\
|
|||
|
_**rules**_ 디렉토리를 생성하고 실행하세요. 이렇게 하면 _**malware\_rules.yar**_라는 파일이 생성되며, 이 파일에는 모든 악성코드 yara 규칙이 포함됩니다.
|
|||
|
```bash
|
|||
|
wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
|
|||
|
mkdir rules
|
|||
|
python malware_yara_rules.py
|
|||
|
```
|
|||
|
#### 스캔
|
|||
|
|
|||
|
```markdown
|
|||
|
The first step in malware analysis is to scan the suspicious file or program. This step helps to identify any known malware signatures or indicators of compromise (IOCs). There are several tools and techniques that can be used for scanning, including antivirus software, sandboxing, and static analysis.
|
|||
|
|
|||
|
Antivirus software: Use a reliable antivirus software to scan the suspicious file. The antivirus software will compare the file against a database of known malware signatures and detect any matches.
|
|||
|
|
|||
|
Sandboxing: Run the suspicious file in a controlled environment called a sandbox. The sandbox isolates the file from the rest of the system, allowing you to observe its behavior without risking the infection of your machine.
|
|||
|
|
|||
|
Static analysis: Analyze the file without executing it. This can be done by examining the file's metadata, such as file size, creation date, and file type. Additionally, you can use tools like file format analyzers and hex editors to inspect the file's structure and contents.
|
|||
|
|
|||
|
By scanning the suspicious file, you can gather initial information about its potential maliciousness and determine if further analysis is required.
|
|||
|
```
|
|||
|
|
|||
|
```html
|
|||
|
Malware 분석의 첫 번째 단계는 의심스러운 파일이나 프로그램을 스캔하는 것입니다. 이 단계는 알려진 악성 코드 식별자나 침해 지표(IOCs)를 확인하는 데 도움이 됩니다. 스캔에는 안티바이러스 소프트웨어, 샌드박싱, 정적 분석 등 여러 도구와 기술을 사용할 수 있습니다.
|
|||
|
|
|||
|
안티바이러스 소프트웨어: 신뢰할 수 있는 안티바이러스 소프트웨어를 사용하여 의심스러운 파일을 스캔합니다. 안티바이러스 소프트웨어는 알려진 악성 코드 식별자 데이터베이스와 파일을 비교하여 일치하는 항목을 감지합니다.
|
|||
|
|
|||
|
샌드박싱: 의심스러운 파일을 샌드박스라는 제어된 환경에서 실행합니다. 샌드박스는 파일을 시스템의 나머지 부분과 격리시켜 시스템 감염의 위험 없이 파일의 동작을 관찰할 수 있게 합니다.
|
|||
|
|
|||
|
정적 분석: 파일을 실행하지 않고 분석합니다. 이는 파일의 메타데이터(파일 크기, 생성 날짜, 파일 유형 등)를 조사함으로써 수행될 수 있습니다. 또한 파일 형식 분석 도구와 헥스 에디터와 같은 도구를 사용하여 파일의 구조와 내용을 검사할 수 있습니다.
|
|||
|
|
|||
|
의심스러운 파일을 스캔함으로써 잠재적인 악성성에 대한 초기 정보를 수집하고 추가 분석이 필요한지 여부를 결정할 수 있습니다.
|
|||
|
```
|
|||
|
```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 규칙을 생성할 수 있습니다. 다음 튜토리얼을 확인해보세요: [**파트 1**](https://www.nextron-systems.com/2015/02/16/write-simple-sound-yara-rules/), [**파트 2**](https://www.nextron-systems.com/2015/10/17/how-to-write-simple-but-sound-yara-rules-part-2/), [**파트 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
|
|||
|
|
|||
|
#### 설치
|
|||
|
|
|||
|
ClamAV는 오픈 소스 악성 코드 탐지 및 백신 소프트웨어입니다. 다음 명령을 사용하여 ClamAV를 설치할 수 있습니다.
|
|||
|
|
|||
|
```bash
|
|||
|
sudo apt-get install clamav
|
|||
|
```
|
|||
|
|
|||
|
또는
|
|||
|
|
|||
|
```bash
|
|||
|
sudo yum install clamav
|
|||
|
```
|
|||
|
|
|||
|
#### 업데이트
|
|||
|
|
|||
|
ClamAV 데이터베이스를 최신 상태로 유지하기 위해 정기적으로 업데이트해야 합니다. 다음 명령을 사용하여 ClamAV 데이터베이스를 업데이트할 수 있습니다.
|
|||
|
|
|||
|
```bash
|
|||
|
sudo freshclam
|
|||
|
```
|
|||
|
|
|||
|
#### 스캔
|
|||
|
|
|||
|
ClamAV를 사용하여 시스템을 스캔하려면 다음 명령을 사용합니다.
|
|||
|
|
|||
|
```bash
|
|||
|
clamscan -r /path/to/scan
|
|||
|
```
|
|||
|
|
|||
|
`-r` 옵션은 재귀적으로 디렉토리를 스캔하도록 지정합니다. `/path/to/scan`은 스캔할 디렉토리 또는 파일의 경로입니다.
|
|||
|
|
|||
|
#### 결과 분석
|
|||
|
|
|||
|
ClamAV 스캔 결과는 악성 코드 또는 의심스러운 파일을 식별합니다. 스캔 결과를 분석하여 악성 파일을 확인할 수 있습니다.
|
|||
|
|
|||
|
#### 자동 스캔
|
|||
|
|
|||
|
ClamAV를 사용하여 자동으로 시스템을 스캔하려면 cron 작업을 설정해야 합니다. cron 작업을 설정하면 정기적으로 ClamAV가 시스템을 스캔하고 악성 코드를 탐지할 수 있습니다.
|
|||
|
```
|
|||
|
sudo apt-get install -y clamav
|
|||
|
```
|
|||
|
#### 스캔
|
|||
|
|
|||
|
```markdown
|
|||
|
The first step in malware analysis is to scan the suspicious file or program. This step helps to identify any known malware signatures or indicators of compromise (IOCs). There are several tools and techniques that can be used for scanning, including antivirus software, sandboxing, and static analysis.
|
|||
|
|
|||
|
Antivirus software: Use a reliable antivirus software to scan the suspicious file. The antivirus software will compare the file against a database of known malware signatures and detect any matches.
|
|||
|
|
|||
|
Sandboxing: Run the suspicious file in a controlled environment called a sandbox. The sandbox isolates the file from the rest of the system, allowing you to observe its behavior without risking the infection of your machine.
|
|||
|
|
|||
|
Static analysis: Analyze the file without executing it. This can be done by examining the file's metadata, such as file size, creation date, and file type. Additionally, you can use tools like file format analyzers to identify any suspicious patterns or anomalies in the file's structure.
|
|||
|
|
|||
|
It is important to note that scanning alone may not be sufficient to detect all types of malware. Some malware may be designed to evade detection by antivirus software or exhibit behavior that is only triggered under specific conditions. Therefore, additional analysis techniques may be necessary to fully understand and mitigate the threat.
|
|||
|
```
|
|||
|
|
|||
|
```html
|
|||
|
<h4>스캔</h4>
|
|||
|
|
|||
|
<p>악성 코드 분석의 첫 번째 단계는 의심스러운 파일이나 프로그램을 스캔하는 것입니다. 이 단계는 알려진 악성 코드 식별자나 침해 지표를 확인하는 데 도움이 됩니다. 스캔에는 백신 소프트웨어, 샌드박싱, 정적 분석 등 여러 도구와 기술을 사용할 수 있습니다.</p>
|
|||
|
|
|||
|
<p>백신 소프트웨어: 신뢰할 수 있는 백신 소프트웨어를 사용하여 의심스러운 파일을 스캔합니다. 백신 소프트웨어는 알려진 악성 코드 식별자 데이터베이스와 파일을 비교하여 일치하는 항목을 감지합니다.</p>
|
|||
|
|
|||
|
<p>샌드박싱: 의심스러운 파일을 샌드박스라는 제어된 환경에서 실행합니다. 샌드박스는 파일을 시스템의 나머지 부분과 격리시켜 시스템 감염의 위험 없이 파일의 동작을 관찰할 수 있게 합니다.</p>
|
|||
|
|
|||
|
<p>정적 분석: 파일을 실행하지 않고 분석합니다. 이는 파일의 메타데이터(파일 크기, 생성 날짜, 파일 유형 등)를 조사함으로써 수행될 수 있습니다. 또한 파일 형식 분석기와 같은 도구를 사용하여 파일 구조에서 의심스러운 패턴이나 이상점을 식별할 수 있습니다.</p>
|
|||
|
|
|||
|
<p>스캔만으로는 모든 유형의 악성 코드를 감지하는 데 충분하지 않을 수 있다는 점을 유의해야 합니다. 일부 악성 코드는 백신 소프트웨어의 탐지를 피하도록 설계되거나 특정 조건에서만 동작하는 행동을 보일 수 있습니다. 따라서 완전한 이해와 위협 완화를 위해 추가적인 분석 기술이 필요할 수 있습니다.</p>
|
|||
|
```
|
|||
|
```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에서 잠재적으로 악성인 **기능**을 감지합니다. 따라서 다음과 같은 것들을 찾을 수 있습니다:
|
|||
|
|
|||
|
* OutputDebugString 오류 확인
|
|||
|
* 서비스로 실행
|
|||
|
* 프로세스 생성
|
|||
|
|
|||
|
[**Github 저장소**](https://github.com/mandiant/capa)에서 받을 수 있습니다.
|
|||
|
|
|||
|
### IOC
|
|||
|
|
|||
|
IOC는 Compromise의 지표입니다. IOC는 일부 잠재적으로 원치 않는 소프트웨어 또는 확인된 **악성 코드**를 식별하는 **조건들의 집합**입니다. Blue Team은 이러한 정의를 사용하여 시스템과 네트워크에서 이러한 악성 파일을 검색합니다.\
|
|||
|
이러한 정의를 공유하는 것은 매우 유용합니다. 컴퓨터에서 악성 코드가 식별되고 해당 악성 코드에 대한 IOC가 생성되면, 다른 Blue Team은 이를 사용하여 악성 코드를 더 빠르게 식별할 수 있습니다.
|
|||
|
|
|||
|
IOC를 생성하거나 수정하는 도구로는 [**IOC Editor**](https://www.fireeye.com/services/freeware/ioc-editor.html)**가 있습니다.**\
|
|||
|
[**Redline**](https://www.fireeye.com/services/freeware/redline.html)과 같은 도구를 사용하여 장치에서 정의된 IOC를 검색할 수 있습니다.
|
|||
|
|
|||
|
### Loki
|
|||
|
|
|||
|
[**Loki**](https://github.com/Neo23x0/Loki)는 간단한 Compromise 지표를 스캔하는 도구입니다.\
|
|||
|
감지는 네 가지 감지 방법을 기반으로 합니다:
|
|||
|
```
|
|||
|
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/)은 GNU GPLv2 라이선스로 출시된 Linux용 악성 코드 스캐너입니다. 이는 공유 호스팅 환경에서 직면하는 위협을 기반으로 설계되었습니다. LMD는 네트워크 엣지 침입 탐지 시스템에서 수집한 위협 데이터를 사용하여 공격 중인 악성 코드를 추출하고 탐지를 위한 시그니처를 생성합니다. 또한, LMD 체크아웃 기능과 악성 코드 커뮤니티 자원을 통해 사용자 제출을 통해 위협 데이터를 얻을 수도 있습니다.
|
|||
|
|
|||
|
### rkhunter
|
|||
|
|
|||
|
[**rkhunter**](http://rkhunter.sourceforge.net)와 같은 도구를 사용하여 파일 시스템에서 가능한 **루트킷**과 악성 코드를 확인할 수 있습니다.
|
|||
|
```bash
|
|||
|
sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--skip-keypress]
|
|||
|
```
|
|||
|
### FLOSS
|
|||
|
|
|||
|
[**FLOSS**](https://github.com/mandiant/flare-floss)는 다양한 기술을 사용하여 실행 파일 내에서 난독화된 문자열을 찾으려고 시도하는 도구입니다.
|
|||
|
|
|||
|
### PEpper
|
|||
|
|
|||
|
[PEpper](https://github.com/Th3Hurrican3/PEpper)는 실행 파일 내에서 기본적인 내용(바이너리 데이터, 엔트로피, URL 및 IP, 일부 yara 규칙)을 확인합니다.
|
|||
|
|
|||
|
### PEstudio
|
|||
|
|
|||
|
[PEstudio](https://www.winitor.com/download)는 Windows 실행 파일의 가져오기, 내보내기, 헤더와 같은 정보를 얻을 수 있는 도구이며, 또한 바이러스 토탈을 확인하고 잠재적인 Att\&ck 기술을 찾을 수도 있습니다.
|
|||
|
|
|||
|
### Detect It Easy(DiE)
|
|||
|
|
|||
|
[**DiE**](https://github.com/horsicq/Detect-It-Easy/)는 파일이 **암호화**되었는지 여부를 감지하고 **패커**를 찾는 도구입니다.
|
|||
|
|
|||
|
### NeoPI
|
|||
|
|
|||
|
[**NeoPI**](https://github.com/CiscoCXSecurity/NeoPI)는 Python 스크립트로, 텍스트/스크립트 파일 내에서 **난독화**된 내용과 **암호화**된 내용을 감지하기 위해 다양한 **통계적 방법**을 사용합니다. NeoPI의 목적은 **숨겨진 웹 쉘 코드**를 감지하는 데 도움을 주는 것입니다.
|
|||
|
|
|||
|
### **php-malware-finder**
|
|||
|
|
|||
|
[**PHP-malware-finder**](https://github.com/nbs-system/php-malware-finder)는 **난독화**된/**의심스러운 코드**와 **악성 코드**/웹쉘에서 자주 사용되는 **PHP** 함수를 사용하는 파일을 감지하기 위해 최선을 다합니다.
|
|||
|
|
|||
|
### Apple Binary Signatures
|
|||
|
|
|||
|
악성 코드 샘플을 확인할 때 항상 이진 파일의 **서명**을 확인해야 합니다. 서명한 **개발자**가 이미 **악성 코드**와 관련이 있을 수 있기 때문입니다.
|
|||
|
```bash
|
|||
|
#Get signer
|
|||
|
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
|
|||
|
|
|||
|
#Check if the app’s contents have been modified
|
|||
|
codesign --verify --verbose /Applications/Safari.app
|
|||
|
|
|||
|
#Check if the signature is valid
|
|||
|
spctl --assess --verbose /Applications/Safari.app
|
|||
|
```
|
|||
|
## 탐지 기법
|
|||
|
|
|||
|
### 파일 스택
|
|||
|
|
|||
|
웹 서버의 **파일들이 마지막으로 업데이트된 날짜**를 알고 있다면, **웹 서버의 모든 파일들이 생성 및 수정된 날짜**를 확인하고, 어떤 날짜가 **수상할 만한지** 확인하세요. 그리고 해당 파일을 확인하세요.
|
|||
|
|
|||
|
### 기준선
|
|||
|
|
|||
|
만약 폴더의 파일들이 **수정되지 않았어야 한다면**, 해당 폴더의 **원본 파일들의 해시**를 계산하고, **현재 파일들과 비교**하세요. 수정된 것은 **수상할 만한 것**입니다.
|
|||
|
|
|||
|
### 통계 분석
|
|||
|
|
|||
|
정보가 로그에 저장되어 있다면, 웹 서버의 각 파일이 웹 쉘 중 하나일 수 있으므로, **각 웹 서버 파일이 얼마나 자주 액세스되었는지와 같은 통계**를 확인할 수 있습니다.
|
|||
|
|
|||
|
<details>
|
|||
|
|
|||
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
|||
|
|
|||
|
HackTricks를 지원하는 다른 방법:
|
|||
|
|
|||
|
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
|||
|
* [**공식 PEASS & HackTricks 스왑**](https://peass.creator-spring.com)을 구매하세요.
|
|||
|
* [**The PEASS Family**](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** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)를 **팔로우**하세요.
|
|||
|
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **당신의 해킹 기교를 공유**하세요.
|
|||
|
|
|||
|
</details>
|