◎ 들어가기전에
- 최근 공개된 PEEP는 Chrome과 Microsoft Edge를 원격접근 도구처럼 사용하는 Chromium 기반 포스트 익스플로이테이션 툴킷입니다.
- 특히 감염 후 TCP 5001과 5002를 이용한 외부 통신, 30초 주기의 평문 HTTP 비콘, Native Messaging 기반 호스트 명령 실행이 함께 관찰되어 브라우저 확장 프로그램을 단순한 편의 기능이 아닌 하나의 공격 표면으로 봐야 합니다.
- 이 글에서는 PEEP의 구조와 주요 기능, 5001·5002 트래픽의 의미, 엔드포인트 및 네트워크 탐지 방법, 사고 대응 절차와 방어 정책을 순서대로 설명하겠습니다.
◎ PEEP의 배경과 개요
- PEEP는 “Smart Bookmarks”라는 이름의 브라우저 확장 프로그램으로 위장하며, Chrome과 Edge에 설치된 뒤 브라우저를 공격자의 지속적인 접근 지점으로 활용합니다.
- 공개 분석에 따르면 PEEP는 최초 침투 도구라기보다, 공격자가 이미 관리자 권한이나 코드 실행 권한을 확보한 뒤 설치하는 사후 침투형 백도어입니다.
- PEEP는 RedExt라는 브라우저 확장 기반 C2 프레임워크와 기술적 연관성을 보입니다.
- RedExt는 Manifest V3 확장 프로그램과 Flask 기반 C2 서버로 구성된 공개 레드팀 프레임워크이며, PEEP는 여기에 Native Messaging, 지속성, 호스트 명령 실행, 브라우저 데이터 수집 기능을 추가한 운영형 파생 도구로 분석됩니다.
- 따라서 PEEP 감염은 “악성 확장 하나를 삭제하면 끝나는 사건”으로 판단해서는 안 됩니다.
- 확장 프로그램, 브라우저 프로필, Windows 레지스트리, Native Messaging 호스트, C2 통신, 탈취된 세션까지 함께 조사해야 합니다.
◎ 주요 변경 사항과 기술적 특징
- PEEP가 기존 브라우저 악성 확장보다 위험한 이유는 브라우저 내부 데이터 수집을 넘어 운영체제 영역으로 연결된다는 점입니다.
| 구분 |
PEEP의 동작 |
| 위장 |
Smart Bookmarks 확장 프로그램 |
| 대상 |
Google Chrome, Microsoft Edge |
| 확장 |
ID ejkndncpkdcjcikfhiamcdehdoegilbj 등 공개 분석에서 식별된 값 |
| 호스트 브리지 |
com.peep.lab Native Messaging Host |
| 실행 파일 |
nm_host.exe |
| C2 주기 |
약 30초마다 HTTP 비콘 |
| 주요 포트 |
TCP 5001, TCP 5002 |
| 데이터 |
쿠키, 방문 기록, 탭 정보, 북마크, 다운로드, 화면·입력 정보 등 |
| 호스트 |
기능 명령 실행, 파일 조작, 프로세스·서비스 조회 |
- 위 확장 ID와 파일명은 변종이나 재빌드 과정에서 달라질 수 있으므로, 단일 IOC만으로 탐지를 종료해서는 안 됩니다.
- 특히 공개된 PEEP 소스와 운영 인프라가 노출된 만큼, 동일한 구조를 이용한 변종이나 복제본이 등장할 가능성도 고려해야 합니다.
◎ 브라우저에서 운영체제로 이어지는 구조
- PEEP의 핵심 구성은 브라우저 확장 프로그램과 Native Messaging 호스트의 결합입니다.
- Chrome과 Edge는 확장 프로그램이 로컬 애플리케이션과 통신할 수 있도록 Native Messaging API를 제공합니다.
- 정상적인 비밀번호 관리자, 문서 편집기, 원격지원 프로그램 등도 이 기능을 사용할 수 있지만, PEEP는 이를 악용해 브라우저 샌드박스 밖에서 명령을 수행합니다.
- PEEP는 다음과 같은 등록 정보를 이용하는 것으로 분석되었습니다.
HKCU\Software\Google\Chrome\NativeMessagingHosts\com.peep.lab
HKCU\Software\Microsoft\Edge\NativeMessagingHosts\com.peep.lab
- 이 레지스트리 항목은 Native Messaging 매니페스트 파일의 위치를 가리키며, 확장 프로그램이 연결을 요청하면 nm_host.exe가 실행되는 구조입니다.
- nm_host.exe는 현재 로그인한 사용자의 권한으로 동작하므로, 그 계정이 접근할 수 있는 파일과 프로세스에 영향을 줄 수 있습니다.
- 공개 분석에서 확인된 기능은 다음과 같습니다.
- 셸 명령 실행
- 파일 목록 조회, 읽기, 쓰기, 삭제
- 프로세스와 서비스 열거
- 브라우저 탭 및 페이지 정보 수집
- 방문 기록, 북마크, 다운로드 기록 수집
- 쿠키와 활성 세션 정보 탈취
- JavaScript 삽입
- 활성 페이지 캡처
- 브라우저 프록시 설정 변경
- 추가 확장 프로그램 또는 구성요소 업데이트
- 특히
- 활성 세션 쿠키가 탈취되면 공격자가 사용자의 비밀번호를 직접 확보하지 않아도 이미 로그인된 웹 서비스에 접근할 수 있습니다.
- 이 경우 MFA가 활성화되어 있어도 기존 세션이 재사용될 수 있으므로, 감염이 의심되면 비밀번호 변경뿐 아니라 모든 세션과 토큰을 폐기해야 합니다.
◎ TCP 5001과 5002의 의미
- TCP 5001: C2 제어 패널과 에이전트 통신
- 공개된 분석에 따르면 PEEP의 C2 서버는 TCP 5001에서 Flask·SQLite 기반 제어 패널을 운영하며, 평문 HTTP를 사용합니다.
- 공격자는 이 서버를 통해 감염된 에이전트를 관리하고 명령을 전달할 수 있습니다.
- PEEP 에이전트가 사용하는 것으로 분석된 API 경로는 다음과 같습니다.
/api/register
/api/commands
/api/agents/<agent-id>/task_result
/api/exfil
/api/extension_update/
/api/extension_crx/
> 모든 환경에서 동일한 URL이 유지된다고 단정할 수는 없지만, 방화벽·프록시·NDR 로그에서 다음 패턴을 우선 확인할 수 있습니다.
- 브라우저 프로세스에서 외부 IP의 TCP 5001 연결
- 약 30초 간격으로 반복되는 HTTP 요청
- POST 요청과 응답의 반복
- 브라우저 프로필 정보나 호스트 식별정보가 포함된 요청
- 비표준 HTTP 헤더 또는 장기간 유지되는 동일한 User-Agent
- 업무상 필요하지 않은 외부 서버와의 일정한 비콘
> PEEP의 비콘은 약 30초 주기로 명령을 확인하고 수집 데이터를 전달하는 것으로 분석되었습니다.
- HTTPS가 아닌 평문 HTTP라면 프록시나 네트워크 센서에서 URI, 헤더, 일부 본문 구조를 직접 확인할 수 있다는 점이 탐지 측면에서는 유리합니다.
- TCP 5002: 노출된 개발·스테이징 서비스
- TCP 5002는 일반적인 사용자 에이전트 통신 포트라기보다, 특정 PEEP C2 인프라에서 개발 저장소와 빌드 산출물, 로그, 유틸리티 등이 노출된 포트로 관찰되었습니다.
- 일부 분석에서는 이 위치에 확장 프로그램 소스 코드와 확장 ID에 사용되는 개인 키까지 노출된 것으로 설명합니다.
> 따라서 5002 outbound 연결은 다음 두 가지 가능성을 모두 고려해야 합니다.
- PEEP 감염 호스트가 공격자의 개발·배포 인프라에 접근하는 경우.
- PEEP 변종 또는 다른 도구가 같은 포트를 이용하는 경우.
> 즉, “5002 연결 = 반드시 PEEP”라고 단정해서는 안 되지만, 브라우저 프로세스 또는 nm_host.exe가 외부 TCP 5002로 연결하면 고위험 이벤트로 분류해 조사하는 것이 적절합니다.
◎ 네트워크 탐지 방법
- 네트워크 탐지는 IP·도메인 IOC와 행위 기반 탐지를 함께 적용해야 합니다.
- 공개 자료에서 언급된 인프라는 다음과 같습니다.
206.237.30[.]232
xfjcc[.]fun
new.xfjcc[.]fun
newadmin.xfjcc[.]fun
newapi.xfjcc[.]fun
- 이 값들은 공개 분석 시점의 IOC이므로 방화벽, DNS, 프록시, EDR, SIEM에 등록할 수 있지만, 향후 변경될 수 있습니다.
- 방화벽·프록시 점검 항목
- 외부 TCP 5001 및 TCP 5002 연결
- Chrome 또는 Edge 프로세스의 직접 외부 연결
- 30초 전후의 규칙적인 반복 통신
- 업무상 설명되지 않는 평문 HTTP 통신
- 동일한 외부 IP로 장시간 반복되는 POST 요청
- 브라우저 프로세스에서 발생했지만 일반 웹 브라우징으로 설명되지 않는 URI
- 단말 간 동일 C2 주소와 동일한 시간 간격을 보이는 연결
> 다음과 같은 개념의 탐지 규칙을 SIEM 또는 NDR에 구현할 수 있습니다.
IF
process IN (chrome.exe, msedge.exe)
AND destination_port IN (5001, 5002)
AND destination NOT IN approved_web_services
THEN
alert "Possible PEEP browser backdoor communication"
> 30초 주기 탐지는 고정값 일치보다 일정 시간 창 안의 반복성을 확인하는 방식이 좋습니다.
동일 단말·동일 외부 목적지에 대해
5분 동안 30초 전후 간격의 HTTP 연결이 5회 이상 발생
AND 목적지 포트가 5001 또는 5002
AND 브라우저 프로세스에서 연결 발생
- 단, Chrome과 Edge는 정상적으로 여러 외부 서버에 반복 연결할 수 있으므로 포트, 목적지 평판, 프로세스 트리, 레지스트리 변경 이벤트를 함께 결합해야 오탐을 줄일 수 있습니다.
◎ 엔드포인트와 브라우저 탐지
- 확장 프로그램 확인
- 관리 대상 단말에서는 Chrome과 Edge의 확장 목록을 수집해 승인된 기준선과 비교해야 합니다.
- “Smart Bookmarks”라는 이름이나 알려진 확장 ID가 확인되면 우선 조사 대상이지만, 이름과 ID가 변경된 변종도 고려해야 합니다.
- Chrome 사용자는 다음 주소에서 수동 확인할 수 있습니다.
chrome://extensions
edge://extensions
- 다만 PEEP는 개발자 모드 경고를 피하거나 정책 기반 설치를 악용할 수 있으므로, 브라우저 화면에 보이는 목록만 믿어서는 안 됩니다.
- 브라우저 정책 레지스트리와 프로필의 Preferences, Secure Preferences, 확장 폴더를 함께 조사해야 합니다.
- Native Messaging Host 확인
- Windows에서는 다음 경로를 우선 조사합니다.
HKCU\Software\Google\Chrome\NativeMessagingHosts
HKLM\Software\Google\Chrome\NativeMessagingHosts
HKCU\Software\Microsoft\Edge\NativeMessagingHosts
HKLM\Software\Microsoft\Edge\NativeMessagingHosts
- 다음 PowerShell 명령은 관련 레지스트리 경로를 확인하는 예시입니다.
$paths = @(
"HKCU:\Software\Google\Chrome\NativeMessagingHosts",
"HKLM:\Software\Google\Chrome\NativeMessagingHosts",
"HKCU:\Software\Microsoft\Edge\NativeMessagingHosts",
"HKLM:\Software\Microsoft\Edge\NativeMessagingHosts"
)
foreach ($path in $paths) {
if (Test-Path $path) {
Get-ChildItem $path | Select-Object PSPath, PSChildName
}
}
- 다음 문자열이 존재하면 고위험 IOC로 취급해야 합니다.
com.peep.lab
nm_host.exe
- 그러나 정상적인 Native Messaging 호스트도 존재할 수 있으므로, 발견 즉시 삭제하기보다 서명, 파일 경로, 설치 주체, 해시, 생성 시각, 연결하는 확장 ID를 확인하는 절차가 필요합니다.
- 프로세스 관계 탐지
- 정상적인 브라우저도 여러 하위 프로세스를 생성하지만, nm_host.exe 또는 출처가 불명확한 실행 파일이 Chrome·Edge와 함께 동작하는 것은 중요합니다.
> 탐지 기준은 다음과 같습니다.
- chrome.exe 또는 msedge.exe가 nm_host.exe를 실행
- 브라우저 프로세스가 PowerShell, cmd, wscript, cscript를 생성
- 브라우저 프로필 파일을 PowerShell이나 비정상 프로세스가 수정
- 브라우저 프로세스가 파일 검색·압축·삭제 명령과 연결
- 브라우저 프로세스 트리에서 외부 C2 연결과 명령 실행이 동시에 발생
> 예시적인 EDR 상관 조건은 다음과 같습니다.
Browser process
-> nm_host.exe
-> powershell.exe or cmd.exe
-> file access / registry modification / network connection
- 브라우저에서 직접 셸 명령을 실행하는 흐름은 업무용 확장 프로그램에서도 드물기 때문에, 고위험 탐지 규칙으로 운영할 수 있습니다.
- Secure Preferences 변조 확인
- PEEP는 Chromium의 확장 무결성 검사를 우회하기 위해 Secure Preferences 파일의 무결성 값을 조작하는 것으로 분석되었습니다.
- 따라서 브라우저가 정상적으로 실행된다는 사실만으로 확장의 무결성을 신뢰해서는 안 됩니다.
> 다음 이벤트를 모니터링하십시오.
- 브라우저 외 프로세스의 Secure Preferences 쓰기
- PowerShell, cmd, Python, 임시 실행 파일의 브라우저 프로필 수정
- protection.macs, super_mac 관련 변경
- 확장 설치 시점과 무관한 프로필 파일 수정
- 프로필 내 새로운 확장 디렉터리 생성
- LocalAppData\PEEP와 유사한 신규 경로 생성
◎ 사고 대응 절차
- PEEP가 의심되면 먼저 네트워크와 세션을 차단한 뒤 증거를 보존해야 합니다.
1단계: 격리
- EDR의 네트워크 격리 기능으로 단말 격리
- 단말의 외부 5001·5002 통신 차단
- 감염 단말에서 업무용 SaaS와 관리자 계정 접근 중지
- 단순히 브라우저만 종료하지 말고 프로세스·예약 작업·정책을 함께 확인
2단계: 증거 보존
- 다음 정보를 삭제 전에 수집합니다.
- 현재 네트워크 연결과 DNS 캐시
- Chrome·Edge 확장 목록
- Native Messaging 레지스트리
- nm_host.exe 파일과 해시
- 브라우저 프로필의 Preferences, Secure Preferences
- EDR 프로세스 트리
- 프록시·방화벽·DNS·웹 게이트웨이 로그
- 브라우저 쿠키와 세션 탈취 가능성을 보여주는 감사 로그
3단계: 지속성 제거
- 조사 결과가 확인된 뒤에는 다음 항목을 제거합니다.
- 비인가 확장 프로그램
- com.peep.lab Native Messaging 등록
- nm_host.exe 및 관련 실행 파일
- 확장 강제 설치 정책
- 브라우저 프로필 내 잔여 확장 디렉터
- LocalAppData\PEEP와 같은 스테이징 경로
- 예약 작업, 시작 프로그램, 임시 스크립트
- 공격자가 추가한 프록시 설정
- 브라우저 UI에서 확장만 제거하는 방식은 충분하지 않습니다. Native Messaging 등록이나 강제 설치 정책이 남아 있으면 재설치될 수 있기 때문입니다.
4단계: 세션과 계정 보호
- PEEP는 활성 세션 쿠키를 노릴 수 있으므로 다음 조치를 수행해야 합니다.
- 감염 단말에서 사용한 계정의 모든 세션 강제 종료
- 이메일, VPN, 클라우드, 관리자 계정의 토큰 폐기
- 중요 계정 비밀번호 재설정
- FIDO2 또는 WebAuthn 기반 피싱 방지 MFA 적용
- 의심 기간의 로그인·토큰 사용 기록 확인
- 동일 세션에서 수행된 파일 다운로드, 메일 전달 규칙, OAuth 앱 승인 점검
비밀번호를 변경하는 것만으로는 이미 탈취된 세션 토큰을 무효화하지 못할 수 있으므로, 서비스별 세션 폐기 절차를 함께 수행해야 합니다.
◎ 방어 정책과 예방 조치
- 확장 프로그램 허용 목록 운영
- Chrome Enterprise 정책의 ExtensionInstallForcelist는 지정된 확장 프로그램을 사용자 개입 없이 설치하는 기능이며, 사용자가 브라우저에서 제거하거나 비활성화하기 어렵게 만들 수 있습니다.
- 공격자가 이 정책을 악용할 수 있으므로 정책 변경 자체를 감사해야 합니다.
> 권장 정책은 다음과 같습니다.
- 기본적으로 확장 설치 차단
- 업무상 필요한 확장만 허용 목록 등록
- 허용 목록 변경 시 승인 절차 적용
- ExtensionInstallForcelist와 ExtensionSettings 변경 감사
- 개발자 모드와 외부 사이드로딩 제한
- 승인되지 않은 확장 설치 시 EDR 알림
- 확장 ID, 게시자, 버전, 업데이트 URL 기준선 관리
- Native Messaging 최소화
> Native Messaging은 필요한 프로그램만 허용해야 합니다.
- NativeMessagingAllowlist 사용
- NativeMessagingBlocklist와 허용 목록 병행
- 사용자 수준 Native Messaging Host 등록 제한 검토
- Native Messaging 매니페스트의 실행 파일 경로와 서명 검증
- 새 레지스트리 등록을 SIEM에 전송
- 브라우저에서 Native Host로 이어지는 프로세스 관계 감시
> 정상적인 Native Messaging 프로그램이 있는 조직에서는 무조건 전체 차단하기보다 승인된 호스트만 허용하는 방식이 현실적입니다.
- 네트워크 이그레스 통제
- 외부 TCP 5001·5002 기본 차단
- 업무상 필요한 경우 목적지와 프로세스 기준으로 제한
- 평문 HTTP 외부 통신 감시
- 브라우저의 직접 인터넷 연결을 프록시 정책으로 통제
- DNS 보안과 신규 도메인 평판 검사 적용
- 30초 주기 비콘 탐지
- IP·도메인 IOC를 방화벽, DNS, EDR, SIEM에 동시 반영
> IP 차단만으로는 새로운 C2를 사용하는 변종을 막기 어렵습니다.
- 따라서 알려진 IOC 차단과 함께 주기성, 포트, 프로세스, 요청 패턴을 결합해야 합니다.
◎ MITRE ATT&CK 관점
- PEEP는 다음 ATT&CK 기술과 연관해 분석할 수 있습니다.
| ATT&CK |
의미 |
| T1176 |
브라우저 확장 프로그램 악용 |
| T1059 |
명령 및 스크립트 인터프리터 |
| T1539 |
웹 세션 쿠키 탈취 |
| T1056 |
입력 캡처 |
| T1005 |
로컬 시스템 데이터 수집 |
| T1113 |
화면 캡처 |
| T1057 |
프로세스 탐색 |
| T1007 |
시스템 서비스 탐색 |
| T1112 |
레지스트리 수정 |
| T1071 |
애플리케이션 계층 프로토콜 사용 |
- 이 매핑은 단순 분류보다 탐지 설계에 유용합니다.
- 예를 들어 T1176만 감시하면 확장 설치만 확인하게 되지만, T1176·T1112·T1057·T1071을 결합하면 “확장 설치 → 레지스트리 지속성 → 프로세스 탐색 → C2 비콘”이라는 공격 흐름을 식별할 수 있습니다.
◎ 마무리
- PEEP의 핵심 위험은 브라우저 확장 프로그램이 브라우저 안에 머무르지 않고 Native Messaging을 통해 운영체제 명령 실행으로 이어진다는 점입니다.
- 특히 외부 TCP 5001·5002 통신, 30초 주기의 평문 HTTP 비콘, com.peep.lab, nm_host.exe, 확장 강제 설치 정책, Secure Preferences 변조를 함께 확인해야 정확한 판단이 가능합니다.
- 방어의 우선순위는 다음과 같습니다.
- 외부 TCP 5001·5002와 알려진 C2 차단
- 30초 주기 브라우저 HTTP 비콘 탐지
- Chrome·Edge 확장 허용 목록 운영
- Native Messaging Host 등록과 브라우저 자식 프로세스 감시
- Secure Preferences 및 확장 강제 설치 정책 변경 감사
- 감염 시 브라우저 확장뿐 아니라 호스트와 세션 전체를 조사
- 쿠키·토큰 폐기와 피싱 방지 MFA 적용
- PEEP는 특정 확장 ID나 IP 하나만 차단하는 방식보다, 브라우저 행위·Native Messaging·레지스트리·네트워크 주기성·세션 보호를 결합한 탐지 체계가 효과적인 사례입니다.