mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
551 lines
28 KiB
Markdown
551 lines
28 KiB
Markdown
# 피싱 방법론
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## 방법론
|
||
|
||
1. 피해자 조사
|
||
1. **피해자 도메인** 선택.
|
||
2. 피해자가 사용하는 **로그인 포털**을 찾기 위해 기본 웹 열거를 수행하고 **어떤 것을** **가장하는지 결정**합니다.
|
||
3. **OSINT**를 사용하여 **이메일**을 **찾습니다**.
|
||
2. 환경 준비
|
||
1. 피싱 평가에 사용할 **도메인 구매**.
|
||
2. 관련 기록(SPF, DMARC, DKIM, rDNS)에 대해 **이메일 서비스 구성**.
|
||
3. **gophish**로 VPS 구성.
|
||
3. 캠페인 준비
|
||
1. **이메일 템플릿** 준비.
|
||
2. 자격 증명을 훔치기 위한 **웹 페이지** 준비.
|
||
4. 캠페인 시작!
|
||
|
||
## 유사 도메인 이름 생성 또는 신뢰할 수 있는 도메인 구매
|
||
|
||
### 도메인 이름 변형 기술
|
||
|
||
- **키워드**: 도메인 이름이 원래 도메인의 중요한 **키워드**를 **포함**합니다 (예: zelster.com-management.com).
|
||
- **하이픈이 있는 서브도메인**: 서브도메인의 **점**을 **하이픈**으로 변경합니다 (예: www-zelster.com).
|
||
- **새 TLD**: **새 TLD**를 사용하는 동일한 도메인 (예: zelster.org).
|
||
- **호모글리프**: 도메인 이름의 문자를 **유사하게 보이는 문자**로 **대체**합니다 (예: zelfser.com).
|
||
|
||
{{#ref}}
|
||
homograph-attacks.md
|
||
{{#endref}}
|
||
- **전치**: 도메인 이름 내에서 **두 문자를 교환**합니다 (예: zelsetr.com).
|
||
- **단수화/복수화**: 도메인 이름 끝에 “s”를 추가하거나 제거합니다 (예: zeltsers.com).
|
||
- **생략**: 도메인 이름에서 **하나의 문자**를 **제거**합니다 (예: zelser.com).
|
||
- **반복**: 도메인 이름에서 **하나의 문자**를 **반복**합니다 (예: zeltsser.com).
|
||
- **대체**: 호모글리프와 비슷하지만 덜 은밀합니다. 도메인 이름의 문자를 원래 문자와 키보드에서 가까운 문자로 대체합니다 (예: zektser.com).
|
||
- **서브도메인화**: 도메인 이름 내에 **점**을 추가합니다 (예: ze.lster.com).
|
||
- **삽입**: 도메인 이름에 **문자**를 **삽입**합니다 (예: zerltser.com).
|
||
- **누락된 점**: 도메인 이름에 TLD를 추가합니다 (예: zelstercom.com).
|
||
|
||
**자동 도구**
|
||
|
||
- [**dnstwist**](https://github.com/elceef/dnstwist)
|
||
- [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
|
||
|
||
**웹사이트**
|
||
|
||
- [https://dnstwist.it/](https://dnstwist.it)
|
||
- [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"으로 변경될 수 있습니다.
|
||
|
||
공격자는 **피해자의 도메인과 유사한 여러 비트 플리핑 도메인을 등록하여 이를 이용할 수 있습니다**. 그들의 의도는 합법적인 사용자를 자신의 인프라로 리디렉션하는 것입니다.
|
||
|
||
자세한 내용은 [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)을 읽어보세요.
|
||
|
||
### 신뢰할 수 있는 도메인 구매
|
||
|
||
[https://www.expireddomains.net/](https://www.expireddomains.net)에서 사용할 수 있는 만료된 도메인을 검색할 수 있습니다.\
|
||
구매할 만료된 도메인이 **이미 좋은 SEO**를 가지고 있는지 확인하기 위해 다음에서 분류를 검색할 수 있습니다:
|
||
|
||
- [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
|
||
- [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/)
|
||
|
||
## 이메일 발견
|
||
|
||
- [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% 무료)
|
||
- [https://phonebook.cz/](https://phonebook.cz) (100% 무료)
|
||
- [https://maildb.io/](https://maildb.io)
|
||
- [https://hunter.io/](https://hunter.io)
|
||
- [https://anymailfinder.com/](https://anymailfinder.com)
|
||
|
||
더 많은 유효한 이메일 주소를 **발견하거나** 이미 발견한 이메일 주소를 **검증**하기 위해 피해자의 SMTP 서버를 브루트 포스할 수 있는지 확인할 수 있습니다. [여기에서 이메일 주소를 검증/발견하는 방법을 배우세요](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\
|
||
또한 사용자가 **메일에 접근하기 위해 웹 포털을 사용하는 경우**, 해당 포털이 **사용자 이름 브루트 포스**에 취약한지 확인하고 가능하다면 취약점을 악용하는 것을 잊지 마세요.
|
||
|
||
## GoPhish 구성
|
||
|
||
### 설치
|
||
|
||
[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의 관리자 사용자 비밀번호가 제공됩니다. 따라서 해당 포트에 접근하고 해당 자격 증명을 사용하여 관리자 비밀번호를 변경합니다. 이 포트를 로컬로 터널링해야 할 수도 있습니다.
|
||
```bash
|
||
ssh -L 3333:127.0.0.1:3333 <user>@<ip>
|
||
```
|
||
### 구성
|
||
|
||
**TLS 인증서 구성**
|
||
|
||
이 단계 전에 사용하려는 **도메인을 이미 구매**해야 하며, 해당 도메인은 **gophish**를 구성하는 **VPS의 IP**를 **가리키고** 있어야 합니다.
|
||
```bash
|
||
DOMAIN="<domain>"
|
||
wget https://dl.eff.org/certbot-auto
|
||
chmod +x certbot-auto
|
||
sudo apt install snapd
|
||
sudo snap install core
|
||
sudo snap refresh core
|
||
sudo apt-get remove certbot
|
||
sudo snap install --classic certbot
|
||
sudo ln -s /snap/bin/certbot /usr/bin/certbot
|
||
certbot certonly --standalone -d "$DOMAIN"
|
||
mkdir /opt/gophish/ssl_keys
|
||
cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem
|
||
cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
|
||
```
|
||
**메일 구성**
|
||
|
||
설치를 시작합니다: `apt-get install postfix`
|
||
|
||
그런 다음 도메인을 다음 파일에 추가합니다:
|
||
|
||
- **/etc/postfix/virtual_domains**
|
||
- **/etc/postfix/transport**
|
||
- **/etc/postfix/virtual_regexp**
|
||
|
||
**/etc/postfix/main.cf** 내의 다음 변수 값도 변경합니다.
|
||
|
||
`myhostname = <domain>`\
|
||
`mydestination = $myhostname, <domain>, localhost.com, localhost`
|
||
|
||
마지막으로 **`/etc/hostname`** 및 **`/etc/mailname`** 파일을 도메인 이름으로 수정하고 **VPS를 재시작합니다.**
|
||
|
||
이제 **DNS A 레코드**를 `mail.<domain>`으로 생성하여 **VPS의 IP 주소**를 가리키고, **DNS MX** 레코드를 `mail.<domain>`으로 설정합니다.
|
||
|
||
이제 이메일을 보내는 테스트를 해봅시다:
|
||
```bash
|
||
apt install mailutils
|
||
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com
|
||
```
|
||
**Gophish 구성**
|
||
|
||
gophish의 실행을 중지하고 구성합시다.\
|
||
`/opt/gophish/config.json`을 다음과 같이 수정합니다 (https 사용에 유의):
|
||
```bash
|
||
{
|
||
"admin_server": {
|
||
"listen_url": "127.0.0.1:3333",
|
||
"use_tls": true,
|
||
"cert_path": "gophish_admin.crt",
|
||
"key_path": "gophish_admin.key"
|
||
},
|
||
"phish_server": {
|
||
"listen_url": "0.0.0.0:443",
|
||
"use_tls": true,
|
||
"cert_path": "/opt/gophish/ssl_keys/key.crt",
|
||
"key_path": "/opt/gophish/ssl_keys/key.pem"
|
||
},
|
||
"db_name": "sqlite3",
|
||
"db_path": "gophish.db",
|
||
"migrations_prefix": "db/db_",
|
||
"contact_address": "",
|
||
"logging": {
|
||
"filename": "",
|
||
"level": ""
|
||
}
|
||
}
|
||
```
|
||
**gophish 서비스 구성**
|
||
|
||
gophish 서비스를 자동으로 시작하고 관리할 수 있도록 하려면 다음 내용을 포함한 파일 `/etc/init.d/gophish`를 생성할 수 있습니다:
|
||
```bash
|
||
#!/bin/bash
|
||
# /etc/init.d/gophish
|
||
# initialization file for stop/start of gophish application server
|
||
#
|
||
# chkconfig: - 64 36
|
||
# description: stops/starts gophish application server
|
||
# processname:gophish
|
||
# config:/opt/gophish/config.json
|
||
# From https://github.com/gophish/gophish/issues/586
|
||
|
||
# define script variables
|
||
|
||
processName=Gophish
|
||
process=gophish
|
||
appDirectory=/opt/gophish
|
||
logfile=/var/log/gophish/gophish.log
|
||
errfile=/var/log/gophish/gophish.error
|
||
|
||
start() {
|
||
echo 'Starting '${processName}'...'
|
||
cd ${appDirectory}
|
||
nohup ./$process >>$logfile 2>>$errfile &
|
||
sleep 1
|
||
}
|
||
|
||
stop() {
|
||
echo 'Stopping '${processName}'...'
|
||
pid=$(/bin/pidof ${process})
|
||
kill ${pid}
|
||
sleep 1
|
||
}
|
||
|
||
status() {
|
||
pid=$(/bin/pidof ${process})
|
||
if [["$pid" != ""| "$pid" != "" ]]; then
|
||
echo ${processName}' is running...'
|
||
else
|
||
echo ${processName}' is not running...'
|
||
fi
|
||
}
|
||
|
||
case $1 in
|
||
start|stop|status) "$1" ;;
|
||
esac
|
||
```
|
||
서비스 구성을 마치고 다음을 확인하세요:
|
||
```bash
|
||
mkdir /var/log/gophish
|
||
chmod +x /etc/init.d/gophish
|
||
update-rc.d gophish defaults
|
||
#Check the service
|
||
service gophish start
|
||
service gophish status
|
||
ss -l | grep "3333\|443"
|
||
service gophish stop
|
||
```
|
||
## 메일 서버 및 도메인 구성
|
||
|
||
### 기다리고 합법적으로 행동하기
|
||
|
||
도메인이 오래될수록 스팸으로 잡힐 확률이 낮아집니다. 따라서 피싱 평가 전에 가능한 한 오랫동안 (최소 1주일) 기다려야 합니다. 또한, 평판이 좋은 분야에 대한 페이지를 만들면 얻는 평판이 더 좋습니다.
|
||
|
||
1주일을 기다려야 하더라도 지금 모든 구성을 마칠 수 있다는 점에 유의하세요.
|
||
|
||
### 역 DNS (rDNS) 레코드 구성
|
||
|
||
VPS의 IP 주소를 도메인 이름으로 해석하는 rDNS (PTR) 레코드를 설정합니다.
|
||
|
||
### 발신자 정책 프레임워크 (SPF) 레코드
|
||
|
||
새 도메인에 대해 **SPF 레코드를 구성해야 합니다**. SPF 레코드가 무엇인지 모른다면 [**이 페이지를 읽어보세요**](../../network-services-pentesting/pentesting-smtp/index.html#spf).
|
||
|
||
[https://www.spfwizard.net/](https://www.spfwizard.net) 를 사용하여 SPF 정책을 생성할 수 있습니다 (VPS 머신의 IP를 사용하세요).
|
||
|
||
.png>)
|
||
|
||
도메인 내 TXT 레코드에 설정해야 하는 내용은 다음과 같습니다:
|
||
```bash
|
||
v=spf1 mx a ip4:ip.ip.ip.ip ?all
|
||
```
|
||
### Domain-based Message Authentication, Reporting & Conformance (DMARC) Record
|
||
|
||
새 도메인에 대해 **DMARC 레코드를 구성해야 합니다**. DMARC 레코드가 무엇인지 모른다면 [**이 페이지를 읽어보세요**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc).
|
||
|
||
호스트 이름 `_dmarc.<domain>`을 가리키는 새로운 DNS TXT 레코드를 다음 내용으로 생성해야 합니다:
|
||
```bash
|
||
v=DMARC1; p=none
|
||
```
|
||
### DomainKeys Identified Mail (DKIM)
|
||
|
||
새 도메인에 대해 **DKIM을 구성해야 합니다**. DMARC 레코드가 무엇인지 모른다면 [**이 페이지를 읽어보세요**](../../network-services-pentesting/pentesting-smtp/index.html#dkim).
|
||
|
||
이 튜토리얼은 다음을 기반으로 합니다: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
|
||
|
||
> [!TIP]
|
||
> DKIM 키가 생성하는 두 B64 값을 연결해야 합니다:
|
||
>
|
||
> ```
|
||
> v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB
|
||
> ```
|
||
|
||
### 이메일 구성 점수 테스트
|
||
|
||
[https://www.mail-tester.com/](https://www.mail-tester.com) 를 사용하여 이를 수행할 수 있습니다.\
|
||
페이지에 접속하여 그들이 제공하는 주소로 이메일을 보내세요:
|
||
```bash
|
||
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
|
||
```
|
||
당신은 또한 **이메일 구성을 확인할 수 있습니다** `check-auth@verifier.port25.com`으로 이메일을 보내고 **응답을 읽는 것** (이를 위해서는 **포트 25를 열고** 이메일을 루트로 보냈을 경우 _/var/mail/root_ 파일에서 응답을 확인해야 합니다).\
|
||
모든 테스트를 통과하는지 확인하세요:
|
||
```bash
|
||
==========================================================
|
||
Summary of Results
|
||
==========================================================
|
||
SPF check: pass
|
||
DomainKeys check: neutral
|
||
DKIM check: pass
|
||
Sender-ID check: pass
|
||
SpamAssassin check: ham
|
||
```
|
||
당신은 또한 **당신이 제어하는 Gmail로 메시지를 보낼 수** 있으며, Gmail 받은편지함에서 **이메일의 헤더**를 확인할 수 있습니다. `dkim=pass`는 `Authentication-Results` 헤더 필드에 있어야 합니다.
|
||
```
|
||
Authentication-Results: mx.google.com;
|
||
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
|
||
dkim=pass header.i=@example.com;
|
||
```
|
||
### 스팸하우스 블랙리스트에서 제거하기
|
||
|
||
페이지 [www.mail-tester.com](https://www.mail-tester.com)은 귀하의 도메인이 스팸하우스에 의해 차단되고 있는지 확인할 수 있습니다. 귀하의 도메인/IP를 제거 요청할 수 있는 곳: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
|
||
|
||
### 마이크로소프트 블랙리스트에서 제거하기
|
||
|
||
귀하의 도메인/IP를 제거 요청할 수 있는 곳: [https://sender.office.com/](https://sender.office.com).
|
||
|
||
## GoPhish 캠페인 생성 및 시작
|
||
|
||
### 발신자 프로필
|
||
|
||
- 발신자 프로필을 식별할 **이름**을 설정합니다.
|
||
- 피싱 이메일을 보낼 계정을 결정합니다. 제안: _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) (10) (15) (2).png>)
|
||
|
||
> [!TIP]
|
||
> "**테스트 이메일 보내기**" 기능을 사용하여 모든 것이 작동하는지 테스트하는 것이 좋습니다.\
|
||
> 테스트를 진행할 때 블랙리스트에 올라가는 것을 피하기 위해 **10분 메일 주소로 테스트 이메일을 보내는 것을 추천합니다.**
|
||
|
||
### 이메일 템플릿
|
||
|
||
- 템플릿을 식별할 **이름**을 설정합니다.
|
||
- 그런 다음 **제목**을 작성합니다 (이상한 것이 아닌, 일반 이메일에서 읽을 수 있는 내용).
|
||
- "**추적 이미지 추가**"를 체크했는지 확인합니다.
|
||
- **이메일 템플릿**을 작성합니다 (다음 예제와 같이 변수를 사용할 수 있습니다):
|
||
```html
|
||
<html>
|
||
<head>
|
||
<title></title>
|
||
</head>
|
||
<body>
|
||
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">Dear {{.FirstName}} {{.LastName}},</span></p>
|
||
<br />
|
||
Note: We require all user to login an a very suspicios page before the end of the week, thanks!<br />
|
||
<br />
|
||
Regards,</span></p>
|
||
|
||
WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
|
||
|
||
<p>{{.Tracker}}</p>
|
||
</body>
|
||
</html>
|
||
```
|
||
**이메일의 신뢰성을 높이기 위해** 클라이언트의 이메일 서명을 사용하는 것이 권장됩니다. 제안 사항:
|
||
|
||
- **존재하지 않는 주소**로 이메일을 보내고 응답에 서명이 있는지 확인합니다.
|
||
- info@ex.com, press@ex.com 또는 public@ex.com과 같은 **공개 이메일**을 검색하고 이메일을 보내고 응답을 기다립니다.
|
||
- **유효한 발견된** 이메일에 연락을 시도하고 응답을 기다립니다.
|
||
|
||
.png>)
|
||
|
||
> [!TIP]
|
||
> 이메일 템플릿은 **전송할 파일을 첨부**할 수 있습니다. NTLM 챌린지를 훔치고 싶다면 특별히 제작된 파일/문서를 사용하여 [이 페이지를 읽어보세요](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
|
||
|
||
### 랜딩 페이지
|
||
|
||
- **이름**을 작성합니다.
|
||
- 웹 페이지의 **HTML 코드를 작성**합니다. 웹 페이지를 **가져올 수** 있습니다.
|
||
- **제출된 데이터 캡처** 및 **비밀번호 캡처**를 선택합니다.
|
||
- **리디렉션**을 설정합니다.
|
||
|
||
.png>)
|
||
|
||
> [!TIP]
|
||
> 일반적으로 페이지의 HTML 코드를 수정하고 로컬에서 몇 가지 테스트를 수행해야 합니다(아마도 Apache 서버를 사용하여) **결과가 마음에 들 때까지**. 그런 다음 그 HTML 코드를 상자에 작성합니다.\
|
||
> HTML에 **정적 리소스**(아마도 CSS 및 JS 페이지)를 사용해야 하는 경우 _**/opt/gophish/static/endpoint**_에 저장한 후 _**/static/\<filename>**_에서 액세스할 수 있습니다.
|
||
|
||
> [!TIP]
|
||
> 리디렉션을 위해 **사용자를 피해자의 합법적인 주요 웹 페이지로 리디렉션**하거나 예를 들어 _/static/migration.html_로 리디렉션하여 **5초 동안 회전하는 휠**([**https://loading.io/**](https://loading.io)**)을 표시한 후 프로세스가 성공적으로 완료되었음을 알릴 수 있습니다.**
|
||
|
||
### 사용자 및 그룹
|
||
|
||
- 이름을 설정합니다.
|
||
- **데이터를 가져옵니다**(예제를 위한 템플릿을 사용하려면 각 사용자의 이름, 성 및 이메일 주소가 필요합니다).
|
||
|
||
.png>)
|
||
|
||
### 캠페인
|
||
|
||
마지막으로 이름, 이메일 템플릿, 랜딩 페이지, URL, 전송 프로필 및 그룹을 선택하여 캠페인을 생성합니다. URL은 피해자에게 전송될 링크가 됩니다.
|
||
|
||
**전송 프로필은 최종 피싱 이메일이 어떻게 보일지 테스트 이메일을 보낼 수 있게 해줍니다**:
|
||
|
||
.png>)
|
||
|
||
> [!TIP]
|
||
> 테스트 이메일을 **10분 메일 주소**로 보내는 것이 좋습니다. 테스트를 하면서 블랙리스트에 오르는 것을 피할 수 있습니다.
|
||
|
||
모든 준비가 완료되면 캠페인을 시작하세요!
|
||
|
||
## 웹사이트 클로닝
|
||
|
||
어떤 이유로 웹사이트를 클론하고 싶다면 다음 페이지를 확인하세요:
|
||
|
||
{{#ref}}
|
||
clone-a-website.md
|
||
{{#endref}}
|
||
|
||
## 백도어가 포함된 문서 및 파일
|
||
|
||
일부 피싱 평가(주로 레드 팀의 경우)에서는 **백도어가 포함된 파일을 전송**하고 싶을 수 있습니다(아마도 C2 또는 인증을 트리거하는 무언가일 수 있습니다).\
|
||
다음 페이지에서 몇 가지 예를 확인하세요:
|
||
|
||
{{#ref}}
|
||
phishing-documents.md
|
||
{{#endref}}
|
||
|
||
## 피싱 MFA
|
||
|
||
### 프록시 MitM를 통한
|
||
|
||
이전 공격은 실제 웹사이트를 가장하고 사용자가 설정한 정보를 수집하는 매우 영리한 방법입니다. 불행히도 사용자가 올바른 비밀번호를 입력하지 않거나 가장한 애플리케이션이 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 페이지는 이를 요청하고 사용자가 이를 입력하면 도구는 이를 실제 웹페이지로 전송합니다.
|
||
4. 사용자가 인증되면 공격자는 **자격 증명, 2FA, 쿠키 및 도구가 MitM을 수행하는 동안의 모든 상호작용 정보를 캡처**하게 됩니다.
|
||
|
||
### VNC를 통한
|
||
|
||
피해자를 **원본과 동일한 모습의 악성 페이지**로 보내는 대신, **실제 웹 페이지에 연결된 브라우저가 있는 VNC 세션**으로 보낸다면 어떻게 될까요? 사용자가 하는 일을 볼 수 있고, 비밀번호, 사용된 MFA, 쿠키 등을 훔칠 수 있습니다...\
|
||
이것은 [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)로 수행할 수 있습니다.
|
||
|
||
## 탐지 탐지
|
||
|
||
당연히 자신이 발각되었는지 아는 가장 좋은 방법 중 하나는 **블랙리스트에서 자신의 도메인을 검색하는 것입니다**. 만약 목록에 나타난다면, 어떤 식으로든 당신의 도메인이 의심스럽다고 감지된 것입니다.\
|
||
도메인이 어떤 블랙리스트에 나타나는지 확인하는 쉬운 방법은 [https://malwareworld.com/](https://malwareworld.com) 를 사용하는 것입니다.
|
||
|
||
그러나 피해자가 **활발히 의심스러운 피싱 활동을 찾고 있는지 아는 다른 방법도 있습니다**:
|
||
|
||
{{#ref}}
|
||
detecting-phising.md
|
||
{{#endref}}
|
||
|
||
피해자의 도메인과 매우 유사한 이름의 도메인을 **구매하거나** **서브도메인**에 대한 **인증서를 생성**할 수 있습니다. 피해자가 그들과 어떤 종류의 **DNS 또는 HTTP 상호작용**을 수행하면, **그가 의심스러운 도메인을 활발히 찾고 있다는 것을 알 수 있습니다**. 그러면 매우 은밀해야 합니다.
|
||
|
||
### 피싱 평가
|
||
|
||
[**Phishious**](https://github.com/Rices/Phishious)를 사용하여 이메일이 스팸 폴더에 들어갈지, 차단될지, 성공할지를 평가하세요.
|
||
|
||
## 고급 신원 손상 (헬프데스크 MFA 재설정)
|
||
|
||
현대의 침입 세트는 이메일 유인책을 완전히 건너뛰고 **서비스 데스크/신원 복구 워크플로우를 직접 타겟팅하여 MFA를 무력화합니다**. 이 공격은 완전히 "자원 활용" 방식입니다: 운영자가 유효한 자격 증명을 소유하면 내장된 관리 도구로 전환합니다 - 악성코드는 필요하지 않습니다.
|
||
|
||
### 공격 흐름
|
||
1. 피해자 정찰
|
||
* LinkedIn, 데이터 유출, 공개 GitHub 등에서 개인 및 기업 세부정보 수집.
|
||
* 고가치 신원(임원, IT, 재무)을 식별하고 **비밀번호/MFA 재설정에 대한 정확한 헬프데스크 프로세스**를 열거합니다.
|
||
2. 실시간 사회 공학
|
||
* 헬프데스크에 전화, Teams 또는 채팅하여 대상을 가장합니다(종종 **스푸핑된 발신자 ID** 또는 **클론된 목소리**로).
|
||
* 지식 기반 검증을 통과하기 위해 이전에 수집한 PII를 제공합니다.
|
||
* 에이전트를 설득하여 **MFA 비밀을 재설정**하거나 등록된 모바일 번호에서 **SIM 스왑**을 수행하게 합니다.
|
||
3. 즉각적인 접근 후 조치(실제 사례에서 ≤60분)
|
||
* 모든 웹 SSO 포털을 통해 발판을 마련합니다.
|
||
* 내장 기능을 사용하여 AD/AzureAD를 열거합니다(바이너리 드롭 없음):
|
||
```powershell
|
||
# 디렉토리 그룹 및 권한 역할 나열
|
||
Get-ADGroup -Filter * -Properties Members | ?{$_.Members -match $env:USERNAME}
|
||
|
||
# AzureAD / Graph – 디렉토리 역할 나열
|
||
Get-MgDirectoryRole | ft DisplayName,Id
|
||
|
||
# 계정이 로그인할 수 있는 장치 열거
|
||
Get-MgUserRegisteredDevice -UserId <user@corp.local>
|
||
```
|
||
* **WMI**, **PsExec** 또는 이미 환경에서 화이트리스트에 등록된 합법적인 **RMM** 에이전트를 통한 측면 이동.
|
||
|
||
### 탐지 및 완화
|
||
* 헬프데스크 신원 복구를 **특권 작업**으로 취급합니다 – 단계적 인증 및 관리자 승인을 요구합니다.
|
||
* 다음에 대한 경고를 발생시키는 **신원 위협 탐지 및 대응(ITDR)** / **UEBA** 규칙을 배포합니다:
|
||
* MFA 방법 변경 + 새로운 장치/지리에서의 인증.
|
||
* 동일한 주체(사용자-→-관리자)의 즉각적인 상승.
|
||
* 헬프데스크 전화를 기록하고 **재설정 전에 이미 등록된 번호로의 콜백을 시행**합니다.
|
||
* 새로 재설정된 계정이 **고급 권한 토큰을 자동으로 상속하지 않도록** **Just-In-Time (JIT) / 특권 액세스**를 구현합니다.
|
||
|
||
---
|
||
|
||
## 대규모 기만 – SEO 중독 및 “ClickFix” 캠페인
|
||
상용 팀은 **검색 엔진 및 광고 네트워크를 배달 채널로 전환하는 대규모 공격**로 고급 작업의 비용을 상쇄합니다.
|
||
|
||
1. **SEO 중독 / 악성 광고**는 `chromium-update[.]site`와 같은 가짜 결과를 상위 검색 광고로 밀어냅니다.
|
||
2. 피해자는 작은 **1단계 로더**(종종 JS/HTA/ISO)를 다운로드합니다. Unit 42에서 확인된 예:
|
||
* `RedLine stealer`
|
||
* `Lumma stealer`
|
||
* `Lampion Trojan`
|
||
3. 로더는 브라우저 쿠키 + 자격 증명 DB를 유출한 다음, **조용한 로더**를 가져와 *실시간*으로 배포 여부를 결정합니다:
|
||
* RAT (예: AsyncRAT, RustDesk)
|
||
* 랜섬웨어 / 와이퍼
|
||
* 지속성 구성 요소 (레지스트리 실행 키 + 예약 작업)
|
||
|
||
### 강화 팁
|
||
* 새로 등록된 도메인을 차단하고 **고급 DNS / URL 필터링**을 검색 광고 및 이메일에 적용합니다.
|
||
* 서명된 MSI / 스토어 패키지에 대한 소프트웨어 설치를 제한하고 정책에 따라 `HTA`, `ISO`, `VBS` 실행을 거부합니다.
|
||
* 설치 프로그램을 여는 브라우저의 자식 프로세스를 모니터링합니다:
|
||
```yaml
|
||
- parent_image: /Program Files/Google/Chrome/*
|
||
and child_image: *\\*.exe
|
||
```
|
||
* 1단계 로더에 의해 자주 남용되는 LOLBins를 사냥합니다(예: `regsvr32`, `curl`, `mshta`).
|
||
|
||
---
|
||
|
||
## AI 강화 피싱 작업
|
||
공격자는 이제 **LLM 및 음성 클론 API**를 연결하여 완전히 개인화된 유인책과 실시간 상호작용을 제공합니다.
|
||
|
||
| 레이어 | 위협 행위자의 사용 예 |
|
||
|-------|-----------------------------|
|
||
|자동화| >100k 이메일/SMS를 무작위 문구 및 추적 링크로 생성 및 전송합니다.|
|
||
|생성 AI| 공개 M&A, 소셜 미디어의 내부 농담을 참조하는 *일회성* 이메일을 생성합니다; 콜백 사기에서 딥페이크 CEO 음성.|
|
||
|행위 AI| 자율적으로 도메인을 등록하고, 오픈 소스 정보를 스크랩하며, 피해자가 클릭하지만 자격 증명을 제출하지 않을 때 다음 단계 이메일을 작성합니다.|
|
||
|
||
**방어:**
|
||
• 신뢰할 수 없는 자동화에서 전송된 메시지를 강조하는 **동적 배너**를 추가합니다(ARC/DKIM 이상을 통해).
|
||
• 고위험 전화 요청에 대해 **음성 생체 인식 도전 문구**를 배포합니다.
|
||
• 인식 프로그램에서 AI 생성 유인책을 지속적으로 시뮬레이션합니다 – 정적 템플릿은 더 이상 유효하지 않습니다.
|
||
|
||
---
|
||
|
||
## MFA 피로 / 푸시 폭탄 변형 – 강제 재설정
|
||
고전적인 푸시 폭탄 외에도 운영자는 헬프데스크 통화 중에 **새로운 MFA 등록을 강제**하여 사용자의 기존 토큰을 무효화합니다. 이후의 로그인 프롬프트는 피해자에게 합법적으로 보입니다.
|
||
```text
|
||
[Attacker] → Help-Desk: “I lost my phone while travelling, can you unenrol it so I can add a new authenticator?”
|
||
[Help-Desk] → AzureAD: ‘Delete existing methods’ → sends registration e-mail
|
||
[Attacker] → Completes new TOTP enrolment on their own device
|
||
```
|
||
AzureAD/AWS/Okta 이벤트에서 **`deleteMFA` + `addMFA`**가 **같은 IP에서 몇 분 이내에** 발생하는지 모니터링합니다.
|
||
|
||
## 클립보드 하이재킹 / 페이스트재킹
|
||
|
||
공격자는 손상된 웹 페이지나 오타가 있는 웹 페이지에서 피해자의 클립보드에 악성 명령을 조용히 복사한 다음, 사용자가 **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/)
|
||
- [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)
|
||
- [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/)
|
||
- [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
|
||
- [2025 Unit 42 Global Incident Response Report – Social Engineering Edition](https://unit42.paloaltonetworks.com/2025-unit-42-global-incident-response-report-social-engineering-edition/)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|