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
b08a28deae
commit
505ceec4dc
@ -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)
|
||||
- [Homograph Attacks](generic-methodologies-and-resources/phishing-methodology/homograph-attacks.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)
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
1. 피해자 조사
|
||||
1. **피해자 도메인** 선택.
|
||||
2. 피해자가 사용하는 **로그인 포털**을 찾기 위해 기본 웹 열거 수행 후 **어떤 것을** **가장 비슷하게** **모방할지 결정**.
|
||||
2. 피해자가 사용하는 **로그인 포털**을 찾기 위해 기본 웹 열거 수행하고 **어떤 것을** **가장할지 결정**.
|
||||
3. **OSINT**를 사용하여 **이메일 찾기**.
|
||||
2. 환경 준비
|
||||
1. 피싱 평가에 사용할 **도메인 구매**.
|
||||
@ -24,14 +24,18 @@
|
||||
- **키워드**: 도메인 이름에 원래 도메인의 중요한 **키워드**가 포함됨 (예: zelster.com-management.com).
|
||||
- **하이픈 서브도메인**: 서브도메인의 **점**을 **하이픈**으로 변경 (예: www-zelster.com).
|
||||
- **새 TLD**: **새 TLD**를 사용하는 동일 도메인 (예: zelster.org).
|
||||
- **호모글리프**: 도메인 이름의 글자를 **비슷하게 보이는 글자**로 **대체** (예: zelfser.com).
|
||||
- **전치**: 도메인 이름 내에서 **두 글자**를 **교환** (예: zelsetr.com).
|
||||
- **호모글리프**: 도메인 이름의 문자를 **비슷하게 보이는 문자**로 **대체** (예: zelfser.com).
|
||||
|
||||
{{#ref}}
|
||||
homograph-attacks.md
|
||||
{{#endref}}
|
||||
- **전치**: 도메인 이름 내에서 두 문자를 **교환** (예: zelsetr.com).
|
||||
- **단수화/복수화**: 도메인 이름 끝에 “s”를 추가하거나 제거 (예: zeltsers.com).
|
||||
- **생략**: 도메인 이름에서 **하나의 글자**를 **제거** (예: zelser.com).
|
||||
- **반복**: 도메인 이름에서 **하나의 글자**를 **반복** (예: zeltsser.com).
|
||||
- **대체**: 호모글리프와 비슷하지만 덜 은밀함. 도메인 이름의 글자 중 하나를 원래 글자와 키보드에서 가까운 글자로 대체 (예: zektser.com).
|
||||
- **생략**: 도메인 이름에서 문자를 **하나 제거** (예: zelser.com).
|
||||
- **반복**: 도메인 이름에서 문자를 **하나 반복** (예: zeltsser.com).
|
||||
- **대체**: 호모글리프와 비슷하지만 덜 은밀함. 도메인 이름의 문자를 원래 문자와 키보드에서 가까운 문자로 대체 (예: zektser.com).
|
||||
- **서브도메인화**: 도메인 이름 내에 **점**을 추가 (예: ze.lster.com).
|
||||
- **삽입**: 도메인 이름에 **글자 삽입** (예: zerltser.com).
|
||||
- **삽입**: 도메인 이름에 **문자 삽입** (예: zerltser.com).
|
||||
- **누락된 점**: 도메인 이름에 TLD 추가 (예: zelstercom.com).
|
||||
|
||||
**자동 도구**
|
||||
@ -51,7 +55,7 @@
|
||||
|
||||
이 개념이 **DNS 요청에 적용될 때**, **DNS 서버에서 수신된 도메인**이 처음 요청한 도메인과 다를 수 있습니다.
|
||||
|
||||
예를 들어, "windows.com" 도메인에서 단일 비트 수정이 "windnws.com"으로 변경될 수 있습니다.
|
||||
예를 들어, "windows.com"의 단일 비트 수정은 "windnws.com"으로 변경할 수 있습니다.
|
||||
|
||||
공격자는 **피해자의 도메인과 유사한 여러 비트 플리핑 도메인을 등록하여 이를 이용할 수 있습니다**. 그들의 의도는 합법적인 사용자를 자신의 인프라로 리디렉션하는 것입니다.
|
||||
|
||||
@ -73,8 +77,8 @@
|
||||
- [https://hunter.io/](https://hunter.io)
|
||||
- [https://anymailfinder.com/](https://anymailfinder.com)
|
||||
|
||||
**더 많은** 유효한 이메일 주소를 **발견하거나** 이미 발견한 이메일 주소를 **검증**하기 위해 피해자의 SMTP 서버를 브루트 포스할 수 있는지 확인할 수 있습니다. [여기에서 이메일 주소를 검증/발견하는 방법을 배우세요](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\
|
||||
또한 사용자가 **메일에 접근하기 위해 웹 포털을 사용하는 경우**, 해당 포털이 **사용자 이름 브루트 포스**에 취약한지 확인하고 가능하다면 취약점을 이용하는 것을 잊지 마세요.
|
||||
**더 많은** 유효한 이메일 주소를 **발견하거나** 이미 발견한 이메일 주소를 **검증**하기 위해 피해자의 SMTP 서버를 브루트포스할 수 있는지 확인할 수 있습니다. [여기에서 이메일 주소를 검증/발견하는 방법을 배우세요](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\
|
||||
또한 사용자가 **메일에 접근하기 위해 웹 포털을 사용하는 경우**, 해당 포털이 **사용자 이름 브루트포스**에 취약한지 확인하고 가능하다면 취약점을 악용하는 것을 잊지 마세요.
|
||||
|
||||
## GoPhish 구성
|
||||
|
||||
@ -83,7 +87,7 @@
|
||||
[https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)에서 다운로드할 수 있습니다.
|
||||
|
||||
다운로드 후 `/opt/gophish`에 압축을 풀고 `/opt/gophish/gophish`를 실행하세요.\
|
||||
출력에서 포트 3333의 관리자 사용자 비밀번호가 제공됩니다. 따라서 해당 포트에 접근하고 그 자격 증명을 사용하여 관리자 비밀번호를 변경하세요. 해당 포트를 로컬로 터널링해야 할 수도 있습니다.
|
||||
출력에서 포트 3333의 관리자 사용자 비밀번호가 제공됩니다. 따라서 해당 포트에 접근하고 해당 자격 증명을 사용하여 관리자 비밀번호를 변경하세요. 해당 포트를 로컬로 터널링해야 할 수도 있습니다.
|
||||
```bash
|
||||
ssh -L 3333:127.0.0.1:3333 <user>@<ip>
|
||||
```
|
||||
@ -91,7 +95,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 +128,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 +138,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 +165,7 @@ gophish의 실행을 중지하고 구성합시다.\
|
||||
```
|
||||
**gophish 서비스 구성**
|
||||
|
||||
gophish 서비스를 자동으로 시작하고 관리할 수 있도록 하려면 다음 내용을 포함하는 파일 `/etc/init.d/gophish`를 생성할 수 있습니다:
|
||||
gophish 서비스를 자동으로 시작하고 관리할 수 있도록 하려면 다음 내용을 포함한 파일 `/etc/init.d/gophish`를 생성할 수 있습니다:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# /etc/init.d/gophish
|
||||
@ -223,7 +227,7 @@ service gophish stop
|
||||
|
||||
### 기다리고 합법적으로 행동하기
|
||||
|
||||
도메인이 오래될수록 스팸으로 잡힐 가능성이 낮아집니다. 따라서 피싱 평가 전에 가능한 한 오랫동안 기다려야 합니다(최소 1주일). 또한, 평판이 좋은 분야에 대한 페이지를 만들면 얻는 평판이 더 좋습니다.
|
||||
도메인이 오래될수록 스팸으로 잡힐 가능성이 줄어듭니다. 따라서 피싱 평가 전에 가능한 한 오랫동안 기다려야 합니다(최소 1주일). 또한, 평판이 좋은 분야에 대한 페이지를 만들면 얻는 평판이 더 좋습니다.
|
||||
|
||||
1주일을 기다려야 하더라도 지금 모든 구성을 마칠 수 있다는 점에 유의하세요.
|
||||
|
||||
@ -305,7 +309,7 @@ dkim=pass header.i=@example.com;
|
||||
- 피싱 이메일을 보낼 계정을 결정합니다. 제안: _noreply, support, servicedesk, salesforce..._
|
||||
- 사용자 이름과 비밀번호는 비워둘 수 있지만, 인증서 오류 무시를 체크하는 것을 잊지 마세요.
|
||||
|
||||
 (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>)
|
||||
 (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>)
|
||||
|
||||
> [!TIP]
|
||||
> "**테스트 이메일 보내기**" 기능을 사용하여 모든 것이 작동하는지 테스트하는 것이 좋습니다.\
|
||||
@ -349,7 +353,7 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
|
||||
### 랜딩 페이지
|
||||
|
||||
- **이름**을 작성합니다.
|
||||
- 웹 페이지의 **HTML 코드를 작성**합니다. 웹 페이지를 **가져올 수** 있습니다.
|
||||
- 웹 페이지의 **HTML 코드를 작성**합니다. 웹 페이지를 **가져올** 수 있습니다.
|
||||
- **제출된 데이터 캡처** 및 **비밀번호 캡처**를 선택합니다.
|
||||
- **리디렉션**을 설정합니다.
|
||||
|
||||
@ -378,7 +382,7 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
|
||||
.png>)
|
||||
|
||||
> [!TIP]
|
||||
> 테스트 이메일을 **10분 메일 주소**로 보내는 것이 좋습니다. 테스트를 하면서 블랙리스트에 올라가는 것을 피할 수 있습니다.
|
||||
> 테스트 이메일을 **10분 메일 주소**로 보내는 것을 권장합니다. 테스트를 하면서 블랙리스트에 오르는 것을 피할 수 있습니다.
|
||||
|
||||
모든 준비가 완료되면 캠페인을 시작하세요!
|
||||
|
||||
@ -403,13 +407,13 @@ 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과 같은 공격을 생성할 수 있게 해줍니다. 기본적으로 공격은 다음과 같은 방식으로 작동합니다:
|
||||
|
||||
1. 실제 웹페이지의 로그인 양식을 **가장합니다**.
|
||||
2. 사용자가 **자신의 자격 증명**을 가짜 페이지로 **전송**하고 도구는 이를 실제 웹페이지로 전송하여 **자격 증명이 작동하는지 확인합니다**.
|
||||
3. 계정이 **2FA**로 구성된 경우, MitM 페이지는 이를 요청하고 사용자가 **입력**하면 도구는 이를 실제 웹페이지로 전송합니다.
|
||||
2. 사용자가 **자신의 자격 증명**을 가짜 페이지로 **보내고**, 도구는 이를 실제 웹페이지로 전송하여 **자격 증명이 작동하는지 확인합니다**.
|
||||
3. 계정이 **2FA**로 구성된 경우, MitM 페이지는 이를 요청하고 사용자가 **입력**하면 도구가 이를 실제 웹페이지로 전송합니다.
|
||||
4. 사용자가 인증되면 공격자는 **자격 증명, 2FA, 쿠키 및 도구가 MitM을 수행하는 동안의 모든 상호작용 정보를 캡처**하게 됩니다.
|
||||
|
||||
### VNC를 통한
|
||||
@ -420,15 +424,15 @@ phishing-documents.md
|
||||
## 탐지 감지
|
||||
|
||||
당연히 자신이 발각되었는지 아는 가장 좋은 방법 중 하나는 **블랙리스트에서 도메인을 검색하는 것입니다**. 만약 목록에 나타난다면, 어떤 식으로든 당신의 도메인이 의심스럽다고 감지된 것입니다.\
|
||||
도메인이 블랙리스트에 나타나는지 확인하는 쉬운 방법은 [https://malwareworld.com/](https://malwareworld.com) 를 사용하는 것입니다.
|
||||
도메인이 어떤 블랙리스트에 나타나는지 확인하는 쉬운 방법은 [https://malwareworld.com/](https://malwareworld.com) 를 사용하는 것입니다.
|
||||
|
||||
그러나 피해자가 **야생에서 의심스러운 피싱 활동을 적극적으로 찾고 있는지 아는 다른 방법도 있습니다**:
|
||||
그러나 피해자가 **활발히 의심스러운 피싱 활동을 찾고 있는지** 아는 다른 방법도 있습니다. 이는 다음과 같이 설명됩니다:
|
||||
|
||||
{{#ref}}
|
||||
detecting-phising.md
|
||||
{{#endref}}
|
||||
|
||||
피해자의 도메인과 **매우 유사한 이름의 도메인을 구매**하거나 **당신이 제어하는 도메인의 서브도메인에 대한 인증서를 생성**할 수 있습니다. 피해자의 도메인의 **키워드**를 포함하는 경우, 피해자가 그들과 어떤 종류의 **DNS 또는 HTTP 상호작용**을 수행하면 **그가 의심스러운 도메인을 적극적으로 찾고 있다는 것을 알 수 있습니다**. 이 경우 매우 은밀해야 합니다.
|
||||
피해자의 도메인과 **매우 유사한 이름의 도메인을 구매**하거나 **당신이 제어하는 도메인의 서브도메인에 대한 인증서를 생성**할 수 있습니다. 피해자의 도메인의 **키워드**를 포함하는 경우, 피해자가 그들과 어떤 종류의 **DNS 또는 HTTP 상호작용**을 수행하면 **그가 의심스러운 도메인을 활발히 찾고 있다는 것을 알 수 있습니다**. 이 경우 매우 은밀해야 합니다.
|
||||
|
||||
### 피싱 평가
|
||||
|
||||
@ -436,7 +440,7 @@ detecting-phising.md
|
||||
|
||||
## 클립보드 하이재킹 / 붙여넣기 해킹
|
||||
|
||||
공격자는 손상된 웹 페이지나 오타가 있는 웹 페이지에서 피해자의 클립보드에 악성 명령을 조용히 복사한 다음 사용자를 속여 **Win + R**, **Win + X** 또는 터미널 창에 붙여넣게 하여 다운로드나 첨부 없이 임의의 코드를 실행할 수 있습니다.
|
||||
공격자는 손상된 웹 페이지나 오타가 있는 웹 페이지에서 피해자의 클립보드에 악성 명령을 조용히 복사한 다음 사용자가 **Win + R**, **Win + X** 또는 터미널 창에 붙여넣도록 속여서 다운로드나 첨부 없이 임의의 코드를 실행할 수 있습니다.
|
||||
|
||||
{{#ref}}
|
||||
clipboard-hijacking.md
|
||||
|
@ -0,0 +1,104 @@
|
||||
# Homograph / Homoglyph Attacks in Phishing
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## 개요
|
||||
|
||||
하모그래프(또는 호모글리프) 공격은 많은 **비라틴 스크립트의 유니코드 코드 포인트가 ASCII 문자와 시각적으로 동일하거나 매우 유사하다는 사실을 악용합니다**. 하나 이상의 라틴 문자를 그들의 유사한 문자로 대체함으로써 공격자는 다음을 만들 수 있습니다:
|
||||
|
||||
* 인간의 눈에는 합법적으로 보이지만 키워드 기반 탐지를 우회하는 표시 이름, 주제 또는 메시지 본문.
|
||||
* 피해자가 신뢰할 수 있는 사이트를 방문하고 있다고 믿게 만드는 도메인, 서브 도메인 또는 URL 경로.
|
||||
|
||||
모든 글리프는 **유니코드 코드 포인트**로 내부적으로 식별되기 때문에, 단일 대체 문자가 순진한 문자열 비교를 무너뜨리기에 충분합니다 (예: `"Παypal.com"` vs. `"Paypal.com"`).
|
||||
|
||||
## 전형적인 피싱 워크플로우
|
||||
|
||||
1. **메시지 내용 작성** – impersonated 브랜드 / 키워드의 특정 라틴 문자를 다른 스크립트(그리스어, 키릴 문자, 아르메니아어, 체로키어 등)에서 시각적으로 구별할 수 없는 문자로 대체합니다.
|
||||
2. **지원 인프라 등록** – 선택적으로 호모글리프 도메인을 등록하고 TLS 인증서를 얻습니다(대부분의 CA는 시각적 유사성 검사를 수행하지 않습니다).
|
||||
3. **이메일 / SMS 전송** – 메시지에는 다음 위치 중 하나 이상에 호모글리프가 포함되어 있습니다:
|
||||
* 발신자 표시 이름 (예: `Ηеlрdеѕk`)
|
||||
* 제목 줄 (`Urgеnt Аctіon Rеquіrеd`)
|
||||
* 하이퍼링크 텍스트 또는 완전한 도메인 이름
|
||||
4. **리디렉션 체인** – 피해자는 자격 증명을 수집하거나 악성 코드를 전달하는 악성 호스트에 도착하기 전에 겉보기에는 무해한 웹사이트나 URL 단축기를 통해 이동합니다.
|
||||
|
||||
## 일반적으로 악용되는 유니코드 범위
|
||||
|
||||
| 스크립트 | 범위 | 예시 글리프 | 유사 문자 |
|
||||
|--------|-------|---------------|------------|
|
||||
| 그리스어 | U+0370-03FF | `Η` (U+0397) | 라틴 `H` |
|
||||
| 그리스어 | U+0370-03FF | `ρ` (U+03C1) | 라틴 `p` |
|
||||
| 키릴 문자 | U+0400-04FF | `а` (U+0430) | 라틴 `a` |
|
||||
| 키릴 문자 | U+0400-04FF | `е` (U+0435) | 라틴 `e` |
|
||||
| 아르메니아어 | U+0530-058F | `օ` (U+0585) | 라틴 `o` |
|
||||
| 체로키어 | U+13A0-13FF | `Ꭲ` (U+13A2) | 라틴 `T` |
|
||||
|
||||
> 팁: 전체 유니코드 차트는 [unicode.org](https://home.unicode.org/)에서 확인할 수 있습니다.
|
||||
|
||||
## 탐지 기술
|
||||
|
||||
### 1. 혼합 스크립트 검사
|
||||
|
||||
영어를 사용하는 조직을 목표로 하는 피싱 이메일은 여러 스크립트의 문자를 혼합하는 경우가 드뭅니다. 간단하지만 효과적인 휴리스틱은 다음과 같습니다:
|
||||
|
||||
1. 검사하는 문자열의 각 문자를 반복합니다.
|
||||
2. 코드 포인트를 해당 유니코드 블록에 매핑합니다.
|
||||
3. 하나 이상의 스크립트가 존재하거나 비라틴 스크립트가 예상치 못한 곳(표시 이름, 도메인, 주제, URL 등)에 나타나면 경고를 발생시킵니다.
|
||||
|
||||
Python 개념 증명:
|
||||
```python
|
||||
import unicodedata as ud
|
||||
from collections import defaultdict
|
||||
|
||||
SUSPECT_FIELDS = {
|
||||
"display_name": "Ηоmоgraph Illusion", # example data
|
||||
"subject": "Finаnꮯiаl Տtatеmеnt",
|
||||
"url": "https://xn--messageconnecton-2kb.blob.core.windows.net" # punycode
|
||||
}
|
||||
|
||||
for field, value in SUSPECT_FIELDS.items():
|
||||
blocks = defaultdict(int)
|
||||
for ch in value:
|
||||
if ch.isascii():
|
||||
blocks['Latin'] += 1
|
||||
else:
|
||||
name = ud.name(ch, 'UNKNOWN')
|
||||
block = name.split(' ')[0] # e.g., 'CYRILLIC'
|
||||
blocks[block] += 1
|
||||
if len(blocks) > 1:
|
||||
print(f"[!] Mixed scripts in {field}: {dict(blocks)} -> {value}")
|
||||
```
|
||||
### 2. Punycode 정규화 (도메인)
|
||||
|
||||
국제화 도메인 이름 (IDN)은 **punycode** (`xn--`)로 인코딩됩니다. 모든 호스트 이름을 punycode로 변환한 다음 다시 유니코드로 변환하면 화이트리스트와 일치시키거나 유사성 검사를 수행할 수 있습니다 (예: Levenshtein 거리) **문자열이 정규화된 후**.
|
||||
```python
|
||||
import idna
|
||||
hostname = "Ρаypal.com" # Greek Rho + Cyrillic a
|
||||
puny = idna.encode(hostname).decode()
|
||||
print(puny) # xn--yl8hpyal.com
|
||||
```
|
||||
### 3. 동형 문자 사전 / 알고리즘
|
||||
|
||||
**dnstwist** (`--homoglyph`) 또는 **urlcrazy**와 같은 도구는 시각적으로 유사한 도메인 변형을 나열할 수 있으며, 사전적 차단 / 모니터링에 유용합니다.
|
||||
|
||||
## 예방 및 완화
|
||||
|
||||
* 엄격한 DMARC/DKIM/SPF 정책을 시행하여 무단 도메인에서의 스푸핑을 방지합니다.
|
||||
* **Secure Email Gateways** 및 **SIEM/XSOAR** 플레이북에 위의 탐지 로직을 구현합니다.
|
||||
* 표시 이름 도메인 ≠ 발신자 도메인인 메시지를 플래그하거나 격리합니다.
|
||||
* 사용자 교육: 의심스러운 텍스트를 유니코드 검사기에 복사-붙여넣기하고, 링크에 마우스를 올리며, URL 단축기를 절대 신뢰하지 마십시오.
|
||||
|
||||
## 실제 사례
|
||||
|
||||
* 표시 이름: `Сonfidеntiаl Ꭲiꮯkеt` (키릴 문자 `С`, `е`, `а`; 체로키 `Ꭲ`; 라틴 소문자 대문자 `ꮯ`).
|
||||
* 도메인 체인: `bestseoservices.com` ➜ municipal `/templates` 디렉토리 ➜ `kig.skyvaulyt.ru` ➜ 커스텀 OTP CAPTCHA로 보호된 가짜 Microsoft 로그인 `mlcorsftpsswddprotcct.approaches.it.com`.
|
||||
* Spotify 사칭: 링크가 `redirects.ca` 뒤에 숨겨진 `Sρօtifŭ` 발신자.
|
||||
|
||||
이 샘플은 Unit 42 연구(2025년 7월)에서 유래되었으며, 동형 문자 남용이 URL 리디렉션 및 CAPTCHA 회피와 결합되어 자동 분석을 우회하는 방법을 보여줍니다.
|
||||
|
||||
## 참고 문헌
|
||||
|
||||
- [The Homograph Illusion: Not Everything Is As It Seems](https://unit42.paloaltonetworks.com/homograph-attacks/)
|
||||
- [Unicode Character Database](https://home.unicode.org/)
|
||||
- [dnstwist – domain permutation engine](https://github.com/elceef/dnstwist)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user