MITRE ATT&CK: T1036.012 (Browser Fingerprint) | 전술: Defense Evasion | 플랫폼: Linux, macOS, Windows
도입: 왜 이 공격이 중요한가
당신이 회사 네트워크에서 웹 브라우징을 하는 순간, 보안 시스템은 당신의 브라우저가 보내는 모든 정보를 확인합니다. User-Agent 문자열, 운영체제 정보, 언어 설정, 화면 해상도까지 말이죠. 그런데 만약 악성 스크립트가 Chrome 브라우저인 척하면서 실제로는 PowerShell에서 실행되고 있다면?
공격자들은 브라우저 핑거프린트를 위조해서 자신들의 악성 트래픽을 정상적인 웹 브라우징처럼 보이게 만듭니다. 네트워크 보안 장비들이 "아, 그냥 직원이 인터넷 쓰는 거구나"라고 착각하도록 하는 거죠.
💡 쉬운 비유: 가짜 신분증으로 클럽에 들어가는 것과 비슷해요. 보안요원(방화벽)이 신분증(User-Agent)만 확인하고 통과시켜주는 걸 노리는 거죠.
1. 공격자 관점
왜 이 기법을 사용하는가
- 네트워크 탐지 우회: 방화벽이나 프록시가 정상 브라우저 트래픽으로 오인하게 만듦
- 행동 패턴 위장: 실제 사용자의 브라우저 환경을 그대로 복사해서 의심받지 않음
- 자동화 도구 은닉: PowerShell, Python 스크립트 등이 마치 웹 브라우저인 것처럼 위장
동작 흐름
공격자는 먼저 대상 환경의 브라우저 정보를 수집한 다음, 자신의 악성 도구가 동일한 정보를 보내도록 설정합니다.
| 단계 | 설명 | 공격자 행동 |
|---|---|---|
| 1. 정보 수집 | 대상 시스템의 브라우저 환경 조사 | 피싱 사이트나 시스템 정보 수집 도구 활용 |
| 2. 핑거프린트 복제 | User-Agent, 언어, 해상도 등 복사 | 수집된 정보를 악성 도구에 하드코딩 |
| 3. 트래픽 위조 | 정상 브라우저인 것처럼 HTTP 요청 전송 | PowerShell이나 스크립트에서 가짜 헤더 사용 |
| 4. 탐지 우회 | 보안 장비가 정상 트래픽으로 분류 | C&C 통신이나 데이터 유출 성공 |
💡 쉬운 비유: 스파이가 현지인 옷차림을 완전히 따라하는 것과 같아요. 겉모습만 보면 구분이 안 되니까요.
2. 실제 공격 사례
📌 FatDuke - Operation Ghost (2019)
배경: 러시아 APT29(Cozy Bear) 그룹이 개발한 FatDuke 악성코드가 유럽 정부기관과 외교기관을 대상으로 장기간 잠복 공격을 수행했습니다. 탐지를 피하기 위해 정교한 브라우저 위장 기법을 사용했죠.
공격 과정:
- 초기 침입: 스피어 피싱 이메일로 대상 시스템에 FatDuke 설치
- 브라우저 정보 수집: 감염된 시스템의 기본 브라우저 User-Agent 문자열 확인
- 트래픽 위장: C&C 서버와 통신할 때 수집된 User-Agent를 그대로 사용해서 정상 브라우징처럼 위장
- 장기 잠복: 몇 년간 탐지되지 않으면서 지속적으로 정보 유출
피해 규모: 유럽 8개국 정부기관의 기밀 외교 문서와 정책 자료가 장기간 유출됨
3. 왜 탐지가 어려운가?
공식 탐지 방법
DET0898 스푸핑된 User-Agent 탐지: GUI 컨텍스트 없이 실행되는 프로세스(예: powershell.exe, wscript.exe)가 정상 브라우저를 모방한 User-Agent로 HTTP 트래픽을 생성하는 경우를 탐지. 해당하는 UI 애플리케이션(예: msedge.exe)이 활성화되어 있지 않거나 부모 계열에 없을 때, User-Agent가 기업 기준선에서 벗어나거나 가짜 플랫폼 지표를 포함하는 경우 탐지 가능.
공격자가 이 기법을 선호하는 이유
정상 트래픽과의 구별 어려움: 네트워크상에서 봤을 때는 진짜 Chrome이나 Firefox에서 보낸 요청과 완전히 동일해 보입니다. HTTP 헤더만으로는 구분이 거의 불가능하죠.
대용량 트래픽 속에서 은닉: 기업 환경에서는 하루에 수십만 개의 웹 요청이 발생하는데, 그 중에서 위조된 몇 개를 찾아내는 건 바늘 찾기예요.
기존 보안 정책 우회: 대부분의 방화벽은 "Chrome에서 보낸 요청이니까 허용"하는 식으로 설정되어 있거든요. 공격자는 이런 허용 정책을 그대로 이용합니다.
탐지의 현실적 한계
프로세스 모니터링의 복잡성: 공식 탐지 방법처럼 프로세스와 네트워크 트래픽을 동시에 분석하려면 엄청난 컴퓨팅 리소스가 필요해요. 실시간으로 모든 HTTP 요청의 부모 프로세스를 확인하는 건 현실적으로 어렵습니다.
높은 오탐률: 정상적인 자동화 도구들도 브라우저 User-Agent를 사용하는 경우가 많아요. 업데이트 체크, API 호출 등에서 말이죠. 이런 걸 다 차단하면 업무에 지장이 생깁니다.
우회 기법의 진화: 공격자들은 실제 브라우저 프로세스를 띄워놓고 그 뒤에서 악성 활동을 하거나, 브라우저 확장 프로그램을 악용하는 식으로 계속 진화하고 있어요.
4. 나도 위험할까? 자가 진단
이 공격이 나와 관련 있는지 확인해보세요.
이런 환경이라면 주의가 필요합니다
- 회사에서 PowerShell이나 Python 스크립트를 자주 실행하는 환경
- 네트워크 모니터링이 User-Agent 기반으로만 이루어지는 경우
- 직원들이 개인 브라우저나 확장 프로그램을 자유롭게 설치할 수 있는 환경
- 웹 프록시 정책이 브라우저 종류별로 단순하게 설정된 경우
공식 대응 방안
M1047 감사(Audit): 각 브라우저에서 필요한 정보만으로 핑거프린팅 표면을 검토하고 제한하여 브라우저를 덜 고유하게 만듭니다. 예를 들어, 사용 가능한 글꼴을 표준 글꼴 목록으로 제한할 수 있습니다.
당장 할 수 있는 것
- 브라우저 확장 프로그램 점검: 설치된 확장 프로그램들이 정말 필요한지 확인하고, 출처가 불분명한 것들은 제거하세요
- 의심스러운 네트워크 활동 신고: 평소와 다른 속도로 인터넷이 느려지거나 이상한 팝업이 뜬다면 보안팀에 즉시 신고
- 🏢 보안 담당자: 프로세스별 네트워크 트래픽 모니터링 도구 도입 및 User-Agent와 실제 프로세스 간 일치성 검증 체계 구축
5. 관련 기술
| 기법 | 설명 | 링크 |
|---|---|---|
| T1036.005 Match Legitimate Name or Location | 브라우저 위장과 함께 프로세스명도 정상 브라우저로 위장할 때 사용 | 정상 프로세스 위장 상세 분석 |
| T1059.001 PowerShell | User-Agent 스푸핑을 위해 PowerShell의 웹 요청 기능을 악용하는 경우가 많음 | PowerShell 악성코드 탐지 상세 분석 |
| T1071.001 Web Protocols | 위조된 브라우저 정보로 HTTP/HTTPS 통신을 통해 C&C 서버와 연결 | MITRE 참고 |
참고 자료
- [MITRE ATT&CK - T1036.012](https://attack.mitre.org/techniques/T1036/012/)
관련 글 더 보기
- 프로세스 인수 덮어쓰기: 공격자가 정상 데몬으로 위장하는 원리 | T1036.011
- 계정명 위장 공격: 공격자가 admin, backup 이름으로 탐지를 우회하는 원리 | T1036.010
- 프로세스 트리 조작: 공격자가 부모 프로세스 추적을 차단하는 원리 | T1036.009
- 소프트웨어 공급망 침해: 한 번 감염으로 수백만 피해자를 만드는 원리 | T1195.002
- NPM 패키지 위조 공격: 개발 도구가 백도어가 되는 원리 | T1195.001
- 공급망 침해 공격: 왜 가장 효과적인 침투 방법인가 (3가지 기법) | T1195
- Kerberos 티켓 탈취·위조: 도메인 인증을 우회하는 5가지 기법 | T1558
- Golden Ticket 공격: 도메인 전체를 영구 지배하는 Kerberos 위조 원리 | T1558.001
안내 및 법적 고지
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었으며, MITRE ATT&CK (최신 버전) 기준 정보를 포함합니다. 기술적 내용은 MITRE ATT&CK 공식 데이터를 기반으로 하며, 보안 교육 목적으로 제공됩니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.
COMMENTS (0)
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.