Chrome Extension Request Hooking 분석
Chrome Extension Request Hooking 분석
Chrome Extension에서 네트워크 요청을 가로채는 구조와 내부 동작 원리 분석
1. 개요
Chrome Extension은 브라우저 내부에서 동작하며 네트워크 요청을 감시하고 수정할 수 있다.
Request Intercept Service Worker WebRequest Forensics주요 사용 목적:
- 트래픽 분석
- 광고 차단
- 보안 검사
- 데이터 수집
2. 전체 구조
Web Page ↓ Chrome Browser ↓ Extension Service Worker ↓ WebRequest API ↓ Request Hooking ↓ Network Server
Extension이 Service Worker를 통해 요청을 가로채는 구조이다.
3. Extension 구성
| 파일 | 역할 |
|---|---|
| manifest.json | Extension 설정 |
| service_worker.js | 백그라운드 동작 |
| content_script.js | 웹페이지 접근 |
| popup.html | UI |
4. Manifest 설정
{
"manifest_version": 3,
"name": "Request Hook",
"version": "1.0",
"permissions": ["webRequest", "webRequestBlocking"],
"host_permissions": [""],
"background": {
"service_worker": "service_worker.js"
}
}
webRequest 권한이 핵심이다.
5. Request Hooking 코드
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
console.log(details.url);
return { cancel: false };
},
{ urls: [""] },
["blocking"]
);
모든 요청을 가로채고 로그를 출력한다.
6. Request 수정
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
details.requestHeaders.push({
name: "X-Test",
value: "Hooked"
});
return { requestHeaders: details.requestHeaders };
},
{ urls: [""] },
["blocking", "requestHeaders"]
);
Header를 수정할 수 있다.
7. Service Worker 구조
Service Worker Start
↓
Event Listener 등록
↓
Request 발생
↓
Hooking 수행
↓
Request 전달
8. 내부 동작 흐름
Browser Network Stack
↓
Extension API
↓
Service Worker
↓
JavaScript Hook
↓
Network Continue
Chrome 내부 네트워크 스택에서 Extension이 개입한다.
9. Content Script Hooking
var originalFetch = window.fetch;
window.fetch = function() {
console.log("fetch intercepted");
return originalFetch.apply(this, arguments);
};
JavaScript 레벨에서도 Hooking 가능하다.
10. Request Hooking 종류
| Hook 방식 | 설명 |
|---|---|
| webRequest | 네트워크 레벨 |
| fetch Hook | JavaScript 레벨 |
| XMLHttpRequest Hook | AJAX 감시 |
| Service Worker | Background 감시 |
11. 포렌식 관점 분석
- Extension 내부 JS 분석
- Service Worker 코드 확인
- webRequest 권한 확인
- 네트워크 로그 비교
- 메모리 Hook 코드 탐색
12. 핵심 분석 포인트
- manifest.json 권한
- Service Worker 코드
- webRequest 이벤트
- fetch Hook 여부
- Header 수정 로직
13. 정리
- Chrome Extension은 네트워크 요청을 가로챌 수 있다
- webRequest API가 핵심
- Service Worker에서 Hook 수행
- JavaScript
댓글
댓글 쓰기