mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/phishing-methodolog
This commit is contained in:
parent
77f43bda34
commit
7a0edce30c
@ -32,6 +32,7 @@
|
||||
- [Clone a Website](generic-methodologies-and-resources/phishing-methodology/clone-a-website.md)
|
||||
- [Detecting Phishing](generic-methodologies-and-resources/phishing-methodology/detecting-phising.md)
|
||||
- [Discord Invite Hijacking](generic-methodologies-and-resources/phishing-methodology/discord-invite-hijacking.md)
|
||||
- [Mobile Phishing Malicious Apps](generic-methodologies-and-resources/phishing-methodology/mobile-phishing-malicious-apps.md)
|
||||
- [Phishing Files & Documents](generic-methodologies-and-resources/phishing-methodology/phishing-documents.md)
|
||||
- [Basic Forensic Methodology](generic-methodologies-and-resources/basic-forensic-methodology/README.md)
|
||||
- [Baseline Monitoring](generic-methodologies-and-resources/basic-forensic-methodology/file-integrity-monitoring.md)
|
||||
|
@ -6,11 +6,11 @@
|
||||
|
||||
1. 피해자 조사
|
||||
1. **피해자 도메인** 선택.
|
||||
2. 피해자가 사용하는 **로그인 포털**을 찾기 위해 기본 웹 열거 수행 후 **어떤 것을** **가장할지 결정**.
|
||||
2. 피해자가 사용하는 **로그인 포털**을 찾기 위해 기본 웹 열거 수행 후 **어떤 것을** **가장 비슷하게** **모방할지 결정**.
|
||||
3. **OSINT**를 사용하여 **이메일 찾기**.
|
||||
2. 환경 준비
|
||||
1. 피싱 평가에 사용할 **도메인 구매**.
|
||||
2. 관련 기록(SPF, DMARC, DKIM, rDNS)으로 **이메일 서비스 구성**.
|
||||
2. 관련 기록의 **이메일 서비스** 구성 (SPF, DMARC, DKIM, rDNS).
|
||||
3. **gophish**로 VPS 구성.
|
||||
3. 캠페인 준비
|
||||
1. **이메일 템플릿** 준비.
|
||||
@ -24,15 +24,15 @@
|
||||
- **키워드**: 도메인 이름에 원래 도메인의 중요한 **키워드**가 포함됨 (예: zelster.com-management.com).
|
||||
- **하이픈 서브도메인**: 서브도메인의 **점**을 **하이픈**으로 변경 (예: www-zelster.com).
|
||||
- **새 TLD**: **새 TLD**를 사용하는 동일 도메인 (예: zelster.org).
|
||||
- **호모글리프**: 도메인 이름의 문자를 **유사한 문자**로 **대체** (예: zelfser.com).
|
||||
- **전치**: 도메인 이름 내에서 두 문자를 **교환** (예: zelsetr.com).
|
||||
- **호모글리프**: 도메인 이름의 글자를 **비슷하게 보이는 글자**로 **대체** (예: zelfser.com).
|
||||
- **전치**: 도메인 이름 내에서 **두 글자**를 **교환** (예: zelsetr.com).
|
||||
- **단수화/복수화**: 도메인 이름 끝에 “s”를 추가하거나 제거 (예: zeltsers.com).
|
||||
- **생략**: 도메인 이름에서 문자를 **하나 제거** (예: zelser.com).
|
||||
- **반복**: 도메인 이름에서 문자를 **하나 반복** (예: zeltsser.com).
|
||||
- **대체**: 호모글리프와 비슷하지만 덜 은밀함. 도메인 이름의 문자를 원래 문자와 가까운 키보드의 문자로 대체 (예: zektser.com).
|
||||
- **생략**: 도메인 이름에서 **하나의 글자**를 **제거** (예: zelser.com).
|
||||
- **반복**: 도메인 이름에서 **하나의 글자**를 **반복** (예: zeltsser.com).
|
||||
- **대체**: 호모글리프와 비슷하지만 덜 은밀함. 도메인 이름의 글자 중 하나를 원래 글자와 키보드에서 가까운 글자로 대체 (예: zektser.com).
|
||||
- **서브도메인화**: 도메인 이름 내에 **점**을 추가 (예: ze.lster.com).
|
||||
- **삽입**: 도메인 이름에 문자를 **삽입** (예: zerltser.com).
|
||||
- **누락된 점**: 도메인 이름에 TLD를 추가 (예: zelstercom.com).
|
||||
- **삽입**: 도메인 이름에 **글자 삽입** (예: zerltser.com).
|
||||
- **누락된 점**: 도메인 이름에 TLD 추가 (예: zelstercom.com).
|
||||
|
||||
**자동 도구**
|
||||
|
||||
@ -45,13 +45,13 @@
|
||||
- [https://dnstwister.report/](https://dnstwister.report)
|
||||
- [https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/](https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/)
|
||||
|
||||
### 비트 플리핑
|
||||
### 비트플리핑
|
||||
|
||||
**저장되거나 통신 중인 일부 비트가 자동으로 뒤바뀔 가능성**이 있으며, 이는 태양 플레어, 우주선, 하드웨어 오류 등 다양한 요인으로 인해 발생할 수 있습니다.
|
||||
**저장되거나 통신 중인 일부 비트가 자동으로 뒤집힐 가능성**이 있습니다. 이는 태양 플레어, 우주선, 하드웨어 오류와 같은 다양한 요인으로 인해 발생할 수 있습니다.
|
||||
|
||||
이 개념이 **DNS 요청에 적용될 때**, **DNS 서버에서 수신된 도메인**이 처음 요청한 도메인과 다를 수 있습니다.
|
||||
|
||||
예를 들어, "windows.com"의 단일 비트 수정은 "windnws.com"으로 변경될 수 있습니다.
|
||||
예를 들어, "windows.com" 도메인에서 단일 비트 수정이 "windnws.com"으로 변경될 수 있습니다.
|
||||
|
||||
공격자는 **피해자의 도메인과 유사한 여러 비트 플리핑 도메인을 등록하여 이를 이용할 수 있습니다**. 그들의 의도는 합법적인 사용자를 자신의 인프라로 리디렉션하는 것입니다.
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
- [https://anymailfinder.com/](https://anymailfinder.com)
|
||||
|
||||
**더 많은** 유효한 이메일 주소를 **발견하거나** 이미 발견한 이메일 주소를 **검증**하기 위해 피해자의 SMTP 서버를 브루트 포스할 수 있는지 확인할 수 있습니다. [여기에서 이메일 주소를 검증/발견하는 방법을 배우세요](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\
|
||||
또한 사용자가 **메일에 접근하기 위해 웹 포털을 사용하는 경우**, 해당 포털이 **사용자 이름 브루트 포스**에 취약한지 확인하고 가능하다면 취약점을 악용하는 것을 잊지 마세요.
|
||||
또한 사용자가 **메일에 접근하기 위해 웹 포털을 사용하는 경우**, 해당 포털이 **사용자 이름 브루트 포스**에 취약한지 확인하고 가능하다면 취약점을 이용하는 것을 잊지 마세요.
|
||||
|
||||
## GoPhish 구성
|
||||
|
||||
@ -91,7 +91,7 @@ ssh -L 3333:127.0.0.1:3333 <user>@<ip>
|
||||
|
||||
**TLS 인증서 구성**
|
||||
|
||||
이 단계 전에 **사용할 도메인을 이미 구매**해야 하며, 해당 도메인은 **gophish**를 구성하고 있는 **VPS의 IP**를 **가리키고** 있어야 합니다.
|
||||
이 단계 전에 **사용할 도메인을 이미 구매해야** 하며, 해당 도메인은 **gophish**를 구성하고 있는 **VPS의 IP**를 **가리켜야** 합니다.
|
||||
```bash
|
||||
DOMAIN="<domain>"
|
||||
wget https://dl.eff.org/certbot-auto
|
||||
@ -124,7 +124,7 @@ cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
|
||||
|
||||
마지막으로 **`/etc/hostname`** 및 **`/etc/mailname`** 파일을 도메인 이름으로 수정하고 **VPS를 재시작합니다.**
|
||||
|
||||
이제 **DNS A 레코드**를 `mail.<domain>`으로 생성하고 **VPS의 IP 주소**를 가리키며, **DNS MX** 레코드를 `mail.<domain>`으로 설정합니다.
|
||||
이제 **DNS A 레코드**를 `mail.<domain>`으로 생성하여 **VPS의 IP 주소**를 가리키고, **DNS MX** 레코드를 `mail.<domain>`으로 설정합니다.
|
||||
|
||||
이제 이메일을 보내는 테스트를 해봅시다:
|
||||
```bash
|
||||
@ -134,7 +134,7 @@ echo "This is the body of the email" | mail -s "This is the subject line" test@e
|
||||
**Gophish 구성**
|
||||
|
||||
gophish의 실행을 중지하고 구성합시다.\
|
||||
`/opt/gophish/config.json`을 다음과 같이 수정합니다 (https 사용에 유의):
|
||||
`/opt/gophish/config.json`을 다음과 같이 수정합니다 (https 사용에 유의하세요):
|
||||
```bash
|
||||
{
|
||||
"admin_server": {
|
||||
@ -161,7 +161,7 @@ gophish의 실행을 중지하고 구성합시다.\
|
||||
```
|
||||
**gophish 서비스 구성**
|
||||
|
||||
gophish 서비스를 자동으로 시작하고 관리할 수 있도록 하려면 다음 내용을 포함한 파일 `/etc/init.d/gophish`를 생성할 수 있습니다:
|
||||
gophish 서비스를 자동으로 시작하고 관리할 수 있도록 하려면 다음 내용을 포함하는 파일 `/etc/init.d/gophish`를 생성할 수 있습니다:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# /etc/init.d/gophish
|
||||
@ -223,7 +223,7 @@ service gophish stop
|
||||
|
||||
### 기다리고 합법적으로 행동하기
|
||||
|
||||
도메인이 오래될수록 스팸으로 잡힐 가능성이 낮아집니다. 따라서 피싱 평가 전에 가능한 한 오랫동안 (최소 1주일) 기다려야 합니다. 또한, 평판이 좋은 분야에 대한 페이지를 만들면 얻는 평판이 더 좋습니다.
|
||||
도메인이 오래될수록 스팸으로 잡힐 가능성이 낮아집니다. 따라서 피싱 평가 전에 가능한 한 오랫동안 기다려야 합니다(최소 1주일). 또한, 평판이 좋은 분야에 대한 페이지를 만들면 얻는 평판이 더 좋습니다.
|
||||
|
||||
1주일을 기다려야 하더라도 지금 모든 구성을 마칠 수 있다는 점에 유의하세요.
|
||||
|
||||
@ -235,7 +235,7 @@ VPS의 IP 주소를 도메인 이름으로 해석하는 rDNS (PTR) 레코드를
|
||||
|
||||
새 도메인에 대해 **SPF 레코드를 구성해야 합니다**. SPF 레코드가 무엇인지 모른다면 [**이 페이지를 읽어보세요**](../../network-services-pentesting/pentesting-smtp/index.html#spf).
|
||||
|
||||
[https://www.spfwizard.net/](https://www.spfwizard.net) 를 사용하여 SPF 정책을 생성할 수 있습니다 (VPS 머신의 IP를 사용하세요).
|
||||
[https://www.spfwizard.net/](https://www.spfwizard.net) 를 사용하여 SPF 정책을 생성할 수 있습니다(사용할 IP는 VPS 머신의 IP입니다).
|
||||
|
||||
.png>)
|
||||
|
||||
@ -247,7 +247,7 @@ v=spf1 mx a ip4:ip.ip.ip.ip ?all
|
||||
|
||||
새 도메인에 대해 **DMARC 레코드를 구성해야 합니다**. DMARC 레코드가 무엇인지 모른다면 [**이 페이지를 읽어보세요**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc).
|
||||
|
||||
호스트 이름 `_dmarc.<domain>`을 가리키는 새로운 DNS TXT 레코드를 다음 내용으로 생성해야 합니다:
|
||||
다음 내용을 포함하여 호스트 이름 `_dmarc.<domain>`을 가리키는 새로운 DNS TXT 레코드를 생성해야 합니다:
|
||||
```bash
|
||||
v=DMARC1; p=none
|
||||
```
|
||||
@ -314,7 +314,7 @@ dkim=pass header.i=@example.com;
|
||||
### 이메일 템플릿
|
||||
|
||||
- 템플릿을 식별할 **이름**을 설정합니다.
|
||||
- 그런 다음 **제목**을 작성합니다 (특별한 것이 아닌, 일반 이메일에서 읽을 수 있는 내용).
|
||||
- 그런 다음 **제목**을 작성합니다 (이상한 내용이 아닌, 일반 이메일에서 읽을 수 있는 내용).
|
||||
- "**추적 이미지 추가**"를 체크했는지 확인합니다.
|
||||
- **이메일 템플릿**을 작성합니다 (다음 예제와 같이 변수를 사용할 수 있습니다):
|
||||
```html
|
||||
@ -392,8 +392,8 @@ clone-a-website.md
|
||||
|
||||
## 백도어가 포함된 문서 및 파일
|
||||
|
||||
일부 피싱 평가(주로 레드 팀의 경우)에서는 **백도어가 포함된 파일을 전송**하고 싶을 수 있습니다(아마도 C2이거나 인증을 트리거하는 무언가일 수 있습니다).\
|
||||
다음 페이지에서 몇 가지 예제를 확인하세요:
|
||||
일부 피싱 평가(주로 레드 팀의 경우)에서는 **백도어가 포함된 파일을 전송**하고 싶을 수 있습니다(아마도 C2 또는 인증을 트리거하는 무언가일 수 있습니다).\
|
||||
다음 페이지에서 몇 가지 예를 확인하세요:
|
||||
|
||||
{{#ref}}
|
||||
phishing-documents.md
|
||||
@ -403,7 +403,7 @@ phishing-documents.md
|
||||
|
||||
### 프록시 MitM를 통한
|
||||
|
||||
이전 공격은 실제 웹사이트를 가장하고 사용자가 설정한 정보를 수집하는 매우 영리한 방법입니다. 불행히도 사용자가 올바른 비밀번호를 입력하지 않거나 가장한 애플리케이션이 2FA로 구성된 경우, **이 정보로는 속은 사용자를 가장할 수 없습니다**.
|
||||
이전 공격은 실제 웹사이트를 가장하고 사용자가 설정한 정보를 수집하는 매우 영리한 방법입니다. 불행히도 사용자가 올바른 비밀번호를 입력하지 않거나 가장한 애플리케이션이 2FA로 구성된 경우, **이 정보로 속인 사용자를 가장할 수 없습니다**.
|
||||
|
||||
이럴 때 [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) 및 [**muraena**](https://github.com/muraenateam/muraena)와 같은 도구가 유용합니다. 이 도구는 MitM과 같은 공격을 생성할 수 있게 해줍니다. 기본적으로 공격은 다음과 같은 방식으로 작동합니다:
|
||||
|
||||
@ -414,7 +414,7 @@ phishing-documents.md
|
||||
|
||||
### VNC를 통한
|
||||
|
||||
피해자를 **원본과 동일한 모습의 악성 페이지**로 보내는 대신, **실제 웹 페이지에 연결된 브라우저가 있는 VNC 세션**으로 보낼 수 있다면 어떻게 될까요? 사용자가 하는 일을 볼 수 있고, 비밀번호, 사용된 MFA, 쿠키 등을 훔칠 수 있습니다.\
|
||||
피해자를 **원본과 동일한 모습의 악성 페이지**로 보내는 대신, **실제 웹 페이지에 연결된 브라우저가 있는 VNC 세션**으로 보낸다면 어떻게 될까요? 사용자가 하는 일을 볼 수 있고, 비밀번호, 사용된 MFA, 쿠키 등을 훔칠 수 있습니다.\
|
||||
이것은 [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)로 수행할 수 있습니다.
|
||||
|
||||
## 탐지 감지
|
||||
@ -422,13 +422,13 @@ phishing-documents.md
|
||||
당연히 자신이 발각되었는지 아는 가장 좋은 방법 중 하나는 **블랙리스트에서 도메인을 검색하는 것입니다**. 만약 목록에 나타난다면, 어떤 식으로든 당신의 도메인이 의심스럽다고 감지된 것입니다.\
|
||||
도메인이 블랙리스트에 나타나는지 확인하는 쉬운 방법은 [https://malwareworld.com/](https://malwareworld.com) 를 사용하는 것입니다.
|
||||
|
||||
그러나 피해자가 **활발히 의심스러운 피싱 활동을 찾고 있는지** 아는 다른 방법도 있습니다. 이는 다음과 같이 설명됩니다:
|
||||
그러나 피해자가 **야생에서 의심스러운 피싱 활동을 적극적으로 찾고 있는지 아는 다른 방법도 있습니다**:
|
||||
|
||||
{{#ref}}
|
||||
detecting-phising.md
|
||||
{{#endref}}
|
||||
|
||||
피해자의 도메인과 **매우 유사한 이름의 도메인을 구매**하거나 **당신이 제어하는 도메인의 서브도메인에 대한 인증서를 생성**할 수 있습니다. 피해자의 도메인의 **키워드**를 포함하는 경우입니다. 만약 **피해자**가 그들과 어떤 종류의 **DNS 또는 HTTP 상호작용**을 수행하면, **그가 의심스러운 도메인을 활발히 찾고 있다는 것을 알 수 있으며 매우 은밀해야 합니다.**
|
||||
피해자의 도메인과 **매우 유사한 이름의 도메인을 구매**하거나 **당신이 제어하는 도메인의 서브도메인에 대한 인증서를 생성**할 수 있습니다. 피해자의 도메인의 **키워드**를 포함하는 경우, 피해자가 그들과 어떤 종류의 **DNS 또는 HTTP 상호작용**을 수행하면 **그가 의심스러운 도메인을 적극적으로 찾고 있다는 것을 알 수 있습니다**. 이 경우 매우 은밀해야 합니다.
|
||||
|
||||
### 피싱 평가
|
||||
|
||||
@ -436,12 +436,18 @@ detecting-phising.md
|
||||
|
||||
## 클립보드 하이재킹 / 붙여넣기 해킹
|
||||
|
||||
공격자는 손상된 웹 페이지나 오타가 있는 웹 페이지에서 피해자의 클립보드에 악성 명령을 조용히 복사한 다음 사용자가 **Win + R**, **Win + X** 또는 터미널 창에 붙여넣도록 속여서 다운로드나 첨부 없이 임의의 코드를 실행할 수 있습니다.
|
||||
공격자는 손상된 웹 페이지나 오타가 있는 웹 페이지에서 피해자의 클립보드에 악성 명령을 조용히 복사한 다음 사용자를 속여 **Win + R**, **Win + X** 또는 터미널 창에 붙여넣게 하여 다운로드나 첨부 없이 임의의 코드를 실행할 수 있습니다.
|
||||
|
||||
{{#ref}}
|
||||
clipboard-hijacking.md
|
||||
{{#endref}}
|
||||
|
||||
## 모바일 피싱 및 악성 앱 배포 (안드로이드 및 iOS)
|
||||
|
||||
{{#ref}}
|
||||
mobile-phishing-malicious-apps.md
|
||||
{{#endref}}
|
||||
|
||||
## 참고 문헌
|
||||
|
||||
- [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/)
|
||||
|
@ -0,0 +1,94 @@
|
||||
# 모바일 피싱 및 악성 앱 배포 (안드로이드 및 iOS)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
> [!INFO]
|
||||
> 이 페이지는 위협 행위자들이 피싱(SEO, 소셜 엔지니어링, 가짜 스토어, 데이팅 앱 등)을 통해 **악성 안드로이드 APK** 및 **iOS 모바일 구성 프로필**을 배포하는 데 사용하는 기술을 다룹니다.
|
||||
> 이 자료는 Zimperium zLabs(2025)에 의해 폭로된 SarangTrap 캠페인과 기타 공개 연구에서 수정되었습니다.
|
||||
|
||||
## 공격 흐름
|
||||
|
||||
1. **SEO/피싱 인프라**
|
||||
* 유사 도메인 수십 개 등록(데이팅, 클라우드 공유, 차량 서비스 등).
|
||||
– Google에서 순위를 매기기 위해 `<title>` 요소에 지역 언어 키워드와 이모지를 사용합니다.
|
||||
– *안드로이드*(`.apk`) 및 *iOS* 설치 지침을 동일한 랜딩 페이지에 호스팅합니다.
|
||||
2. **1단계 다운로드**
|
||||
* 안드로이드: *서명되지 않은* 또는 “제3자 스토어” APK에 대한 직접 링크.
|
||||
* iOS: 악성 **mobileconfig** 프로필에 대한 `itms-services://` 또는 일반 HTTPS 링크(아래 참조).
|
||||
3. **설치 후 소셜 엔지니어링**
|
||||
* 첫 실행 시 앱이 **초대/검증 코드**를 요청합니다(독점 접근 환상).
|
||||
* 코드는 **HTTP로 POST**되어 Command-and-Control (C2)로 전송됩니다.
|
||||
* C2는 `{"success":true}`로 응답 ➜ 악성코드가 계속 실행됩니다.
|
||||
* 유효한 코드를 제출하지 않는 샌드박스/AV 동적 분석은 **악성 행동이 없음**을 확인합니다(회피).
|
||||
4. **런타임 권한 남용** (안드로이드)
|
||||
* 위험한 권한은 **긍정적인 C2 응답 후에만 요청**됩니다:
|
||||
```xml
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||
<!-- 이전 빌드는 SMS 권한도 요청했습니다 -->
|
||||
```
|
||||
* 최근 변종은 **`AndroidManifest.xml`에서 SMS에 대한 `<uses-permission>`을 제거**하지만, SMS를 리플렉션을 통해 읽는 Java/Kotlin 코드 경로는 남겨둡니다 ⇒ 권한을 `AppOps` 남용 또는 이전 대상을 통해 부여받는 장치에서 여전히 기능하면서 정적 점수를 낮춥니다.
|
||||
5. **페사드 UI 및 백그라운드 수집**
|
||||
* 앱은 로컬에서 구현된 무해한 뷰(SMS 뷰어, 갤러리 선택기)를 표시합니다.
|
||||
* 동시에 다음을 유출합니다:
|
||||
- IMEI / IMSI, 전화번호
|
||||
- 전체 `ContactsContract` 덤프(JSON 배열)
|
||||
- 크기를 줄이기 위해 [Luban](https://github.com/Curzibn/Luban)으로 압축된 `/sdcard/DCIM`의 JPEG/PNG
|
||||
- 선택적 SMS 내용(`content://sms`)
|
||||
페이로드는 **배치 압축**되어 `HTTP POST /upload.php`를 통해 전송됩니다.
|
||||
6. **iOS 배포 기술**
|
||||
* 단일 **모바일 구성 프로필**이 `PayloadType=com.apple.sharedlicenses`, `com.apple.managedConfiguration` 등을 요청하여 장치를 “MDM”-유사 감독에 등록할 수 있습니다.
|
||||
* 소셜 엔지니어링 지침:
|
||||
1. 설정 열기 ➜ *프로필 다운로드됨*.
|
||||
2. *설치*를 세 번 탭합니다(피싱 페이지의 스크린샷).
|
||||
3. 서명되지 않은 프로필을 신뢰합니다 ➜ 공격자가 *연락처* 및 *사진* 권한을 App Store 검토 없이 획득합니다.
|
||||
7. **네트워크 레이어**
|
||||
* 일반 HTTP, 종종 포트 80에서 `api.<phishingdomain>.com`과 같은 HOST 헤더로.
|
||||
* `User-Agent: Dalvik/2.1.0 (Linux; U; Android 13; Pixel 6 Build/TQ3A.230805.001)` (TLS 없음 → 쉽게 탐지 가능).
|
||||
|
||||
## 방어 테스트 / 레드팀 팁
|
||||
|
||||
* **동적 분석 우회** – 악성코드 평가 중 Frida/Objection을 사용하여 초대 코드 단계를 자동화하여 악성 분기로 도달합니다.
|
||||
* **매니페스트 vs. 런타임 차이** – `aapt dump permissions`와 런타임 `PackageManager#getRequestedPermissions()`를 비교합니다; 위험한 권한이 누락된 것은 경고 신호입니다.
|
||||
* **네트워크 카나리** – 코드 입력 후 비정상적인 POST 폭주를 감지하기 위해 `iptables -p tcp --dport 80 -j NFQUEUE`를 구성합니다.
|
||||
* **mobileconfig 검사** – macOS에서 `security cms -D -i profile.mobileconfig`를 사용하여 `PayloadContent`를 나열하고 과도한 권한을 찾아냅니다.
|
||||
|
||||
## 블루팀 탐지 아이디어
|
||||
|
||||
* **인증서 투명성 / DNS 분석**을 통해 키워드가 풍부한 도메인의 갑작스러운 폭주를 포착합니다.
|
||||
* **User-Agent 및 경로 정규 표현식**: `(?i)POST\s+/(check|upload)\.php` Google Play 외부의 Dalvik 클라이언트에서.
|
||||
* **초대 코드 텔레메트리** – APK 설치 직후 6–8자리 숫자 코드의 POST는 스테이징을 나타낼 수 있습니다.
|
||||
* **MobileConfig 서명** – MDM 정책을 통해 서명되지 않은 구성 프로필을 차단합니다.
|
||||
|
||||
## 유용한 Frida 스니펫: 초대 코드 자동 우회
|
||||
```python
|
||||
# frida -U -f com.badapp.android -l bypass.js --no-pause
|
||||
# Hook HttpURLConnection write to always return success
|
||||
Java.perform(function() {
|
||||
var URL = Java.use('java.net.URL');
|
||||
URL.openConnection.implementation = function() {
|
||||
var conn = this.openConnection();
|
||||
var HttpURLConnection = Java.use('java.net.HttpURLConnection');
|
||||
if (Java.cast(conn, HttpURLConnection)) {
|
||||
conn.getResponseCode.implementation = function(){ return 200; };
|
||||
conn.getInputStream.implementation = function(){
|
||||
return Java.use('java.io.ByteArrayInputStream').$new("{\"success\":true}".getBytes());
|
||||
};
|
||||
}
|
||||
return conn;
|
||||
};
|
||||
});
|
||||
```
|
||||
## 지표 (일반)
|
||||
```
|
||||
/req/checkCode.php # invite code validation
|
||||
/upload.php # batched ZIP exfiltration
|
||||
LubanCompress 1.1.8 # "Luban" string inside classes.dex
|
||||
```
|
||||
## References
|
||||
|
||||
- [The Dark Side of Romance: SarangTrap Extortion Campaign](https://zimperium.com/blog/the-dark-side-of-romance-sarangtrap-extortion-campaign)
|
||||
- [Luban – Android image compression library](https://github.com/Curzibn/Luban)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user