.CHM 파일이란?
개념
CHM 파일 형식은 HTML 페이지 모음으로 구성된 Microsoft HTML 도움말 파일을 나타낸다. 항목에 빠르게 액세스하고 도움말 문서의 다른 부분으로 이동할 수 있는 색인을 제공한다. CHM 파일에는 텍스트, 이미지 및 하이퍼링크가 포함될 수 있고, 웹 브라우저에서 볼 수 있다. Windows 및 기타 프로그램에서 온라인 도움말 솔루션으로 사용된다.
CHM 파일 형식
생성된 CHM 파일의 최종 형식은 도움말 시스템이 어떻게 디자인되었는지와 응용 프로그램 또는 웹 사이트를 대상으로 하는지 여부에 따라 다르다. CHM 파일은 LZX 압축을 통한 데이터 압축을 지원하여 압축된 HTML 파일을 생성한다. CHM 파일은 HTML 파일 세트, 연결된 목차 및 색인 파일로 구성되어 있다.
HTML 파일
프로그램으로 배포를 위해 도움말 항목을 작성하든 웹에서 작성하든 사용자가 작성한 문서는 HTML(Hypertext Markup Language)이라는 특수 서식 언어를 사용하여 작성된다. HTML 파일에는 .htm 또는 .html 파일 이름 확장자가 있다.
목차 (TOC)
도움말 목차(.hhc) 파일은 목차의 항목 제목이 포함된 HTML 파일이다. 사용자가 컴파일된 도움말 파일(또는 웹 페이지)에서 목차를 열고 항목 제목을 클릭하면 해당 제목과 연결된 HTML 파일이 열린다.
색인 파일
색인(.hhk) 파일은 색인에 대한 색인 항목(키워드)이 포함된 HTML 파일이다. 사용자가 컴파일된 도움말 파일 또는 웹 페이지에서 색인을 열고 키워드를 클릭하면 키워드와 연결된 HTML 파일이 열린다.
※ 참고자료 및 추가 정보 : https://docs.fileformat.com/web/chm/
악성 CHM 파일의 동작 방식
- hh.exe (microsoft html help executable 프로그램)를 통해 CHM 파일 실행
- 실행된 CHM 파일은 내부에 존재하는 HTML 파일을 통해 도움말 창을 생성
- 도움말 창을 생성하는 HTML 및 이미지 파일들은 CHM 파일 압축 해제 시에 확인 가능
- HTML 파일에는 텍스트, HTML 태그 및 요소, 스크립트 언어(JS, VBS), ActiveX 컨트롤 등이 포함
- HTML 파일을 통해 여러 기능을 수행
- 도움말 창에서 이미지, 사운드, 목차 등의 기능 사용
- 시작 화면, 팝업 창, 바로가기 버튼 등 기타 명령들 추가
- HTML 태그 중 <SCRIPT> 태그를 활용해 JavaScript 등 스크립트 코드를 실행
▶ 악성 CHM에서는 이와 같은 기능을 이용해 악성 명령어를 통해 악성 파일을 실행
세 가지 유형의 악성 CHM 파일 심층 분석
유형 1. 정상 파일과 함께 압축 파일 형태로 메일 첨부
정상 파일과 함께 압축 파일 형태로 메일에 첨부되어 유포되는 형태. 첨부 파일은 Zip 파일 또는 RAR 파일로 구성되어 있으며, 내부에는 악성 CHM 파일뿐만 아니라 정상 워드 문서도 포함된 경우가 있음.
CHM 파일 동작 과정
▶ CHM 파일은 도움말 창 생성과 함께 cmd 명령어를 실행해 다음과 같은 방식으로 악성 행위를 수행
cmd 명령어가 실행되면 %USERPROFILE%\Links\ 폴더에 Document.dat 파일을 생성하고 Base64로 인코딩된 명령어를 저장
(※ .dat 파일 : 소프트웨어가 처리할 수 있는 중요한 정보가 들어간 파일_참고 자료 https://ko.savtec.org/articles/howto/what-is-a-dat-file-and-how-do-i-open-one.html )
certutil -decode 명령을 통해 Document.dat에 존재하는 데이터를 디코딩하여 동일한 폴더에 Document.jes로 저장
※ certutil 명령어 : 인증서 관련 명령어로 cmd 파일에서 실행됨
(참고 자료 : https://jdh5202.tistory.com/357, https://learn.microsoft.com/ko-kr/windows-server/administration/windows-commands/certutil )
※ JSE 파일 : 자바 스크립트와 유사한 형식으로 소스 코드가 포함되어 있다. JScript의 윈도우에 사용되는 프로그래밍 언어 및 Microsoft에 의해 유지된다.
(참고 자료 : https://www.solvusoft.com/ko/file-extensions/file-extension-jse/ )
또한, 아래 RUN 키에 %USERPROFILE%\Links\Document.jse 파일을 등록해 파일이 지속적으로 실행
→ ex. HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
파워쉘을 통해 특정 URL에 접속하여 실행파일을 다운로드하고 %tmp% 폴더에 csrss.exe 라는 파일명으로 저장 및 실행한다. CHM 파일은 악성 파일을 추가로 다운로드하지 않지만, 동일한 방식으로 유포되고 있는 악성 파일의 경우 키로깅, C2 접속 시도 등의 악성 행위를 수행하고 있어 유사한 기능을 가진 실행 파일을 다운로드한다고 추정 가능
※ csrss 파일 : 윈도우 서브 시스템이라고도 불리며, 프로세스와 스레드를 관리하는 역할
(참고자료 : https://plummmm.tistory.com/137)
※ C2 서버(통신) : 해커가 악성코드에 명령을 내릴 때 사용하는 통신
(참고자료 : https://hardner.tistory.com/37)
유형 2. DLL 하이재킹 기법을 이용해 악성 행위 수행
DLL 하이재킹 (Hijacking) 기법을 이용해 국가 기관 관리자 및 대학교수 등을 대상으로 유포되는 것이 가장 큰 특징이다.
DLL 하이재킹 기법
정상 프로그램 실행 시 DLL을 로드하는 과정에서 발생하는 취약점으로 정상 DLL이 아닌 공격자가 제작한 악성 DLL이 로드해 악성행위를 수행하는 것
※ DLL : 동적 링크 라이브러리 (https://goddaehee.tistory.com/185)
CHM 파일 동작 과정
악성 CHM 파일에 포함된 HTML 파일의 코드 특징 : 특정 id의 속성 영역에 악성 명령어를 포함한 후 Click() 함수를 통해 해당 명령어를 실행. 이때 다음과 같이 총 두 개의 명령어가 실행된다.
- 현재 실행된 악성 CHM 파일을 hh.exe 프로세스를 통해 디컴파일한다.
- 이후 디컴파일되어 생성된 파일 중 정상 프로그램을 실행하는 기능을 수행한다.
이때 함께 생성된 악성 DLL이 DLL 하이재킹 기법을 통해 로드되어 악성 행위를 수행한다.
로드된 악성 DLL은 먼저 해당 PC의 TEMP 폴더 내에 존재하는 파일의 개수를 검사한다. 파일 개수가 18개 미만인 경우 프로세스가 종료되고, 이상인 경우 악성 행위를 수행한다. 해당 과정은 실제 사용자가 사용 중인 PC 인지, 가상 환경인지 확인하는 것으로 추정된다. 파일 개수를 검사한 후 현재 실행 프로세스명을 추가로 검사한다. 또한 동작 과정에서 악성 DLL이 공격자가 의도한 방식으로 실행되었는지 확인하기 위해 DLL은 “ImagingDevices.exe” 문자열과 비교한다.
PC 환경 검사가 모두 끝나면 실제 악성 행위가 수행된다.
먼저 RUN 키에 현재 실행 중인 프로그램을 등록해 악성 행위가 지속적으로 유지될 수 있도록 함
(SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run)
이후 %TEMP% 폴더에 악성 VBE 파일을 생성 후 실행한다. 디코딩된 VBE는 ReVBShell로, 공격자의 명령에 따라 추가 악성 행위를 수행할 수 있다. C2에 접속해 공격자의 명령어를 받으며, WMI 쿼리를 통해 해당 PC에 설치된 백신 제품 정보를 가져와 “ESET Security” 문자열이 존재하는 경우에는 악성 행위를 수행하지 않는다.
▶ 이 유형의 경우 악성 CHM 파일에 감염되면 다양한 유형의 악성코드를 추가로 생성할 수 있다. 추가로 생성된 악성파일로 인해 사용자 정보가 유출될 수 있으며, 탈취된 정보를 이용한 2차 피해가 발생할 수 있다.
유형 3. CHM 파일 내부 악성 실행 파일 생성 및 실행
▶ 이 유형은 CHM 파일 실행 시 내부에 포함된 악성 실행 파일을 생성 후 실행하는 형태이다.
코로나 확진자가 다수 발생한 시기를 노려 코로나 확진자 안내문을 사칭한 악성 CHM 파일을 유포. 악성 CHM 파일을 실행하게 되면 사용자 PC 화면에는 [그림4]와 같이 코로나 확진자 안내문 창이 생성되어 악성 파일이 실행된 것을 인지하기 어려움.
또한, 동거인 안내문에 포함된 단축 URL은 [그림 5]과 같이 정상 사이트로 리다이렉트(redirect)되어 사용자는 악성 행위를 더욱 알아채기 힘들다.
CHM 파일 동작 과정
악성 CHM 파일에 포함된 HTML 파일의 코드를 확인해 보면, 악성 스크립트가 존재하는 것을 볼 수 있다. 해당 스크립트의 기능은 getElementById() 함수를 통해 “tt” id 속성을 가진 요소를 찾은 후 innerHTML() 함수를 이용해 특정 데이터를 해당 요소에 삽입하게 된다.
※ getElementById() 함수 : 해당되는 id의 요소에 접근하는 함수 (http://jynote.net/entry/Javascript-documentgetElementById)
※ innerHTML() 함수 : HTML 요소의 내용을 변경하고 싶은 경우에 사용 (https://ponyozzang.tistory.com/685)
삽입되는 데이터는 “xx” 명의 id를 가진 객체이며, 해당 객체에 악성 명령어가 포함되어 있다. 악성 명령어는 hh.exe 프로세스를 통해 chm 파일을 디컴파일해 “c:\\programdata\\chmtemp” 폴더에 생성하는 기능을 수행한다. 해당 데이터가 삽입되면 Click() 함수를 통해 악성 명령어가 실행되는 형태이다. 이후 동일한 과정으로 두 번째 명령어가 실행된다. 두 번째 명령어는 디컴파일되어 생성된 파일 중 “chmext.exe” 파일을 실행하는 기능을 수행한다.
chmext.exe 파일이 실행되면 현재 실행 중인 프로세스를 확인해 v3l4sp.exe의 존재 유무를 확인한다. v3l4sp.exe(V3 Lite)인 프로세스가 존재할 경우 추가 악성 행위는 수행하지 않고 종료된다. 이를 통해 V3 Lite를 사용하는 개인 고객의 경우 추가 악성 행위는 수행하지 않고 종료되며, 기업 사용자의 경우 악성 행위가 그대로 발현될 수 있다.
프로세스 확인 후 %ProgramData%\Intel 폴더에 IntelRST.exe를 생성하고 RUN 키에 생성한 파일을 동록해 악성 파일이 지속적으로 실행될 수 있도록 한다. chmext.exe로부터 생성된 IntelRST.exe는 실행 시 Windows Defender 예약 및 실시간 검사의 제외 파일로 등록하기 위해 파워쉘 명령어를 수행한다.
이후 dl.dropboxusercontent[.]com/s/k288s9tu2o53v41/zs_url.txt?dl=0에 접속해 추가 URL 데이터를 받아온다. 접속한 주소로부터 추가 URL 데이터를 받은 경우, [받아온 URL]/post.php (naveicoipc[.]tech/post.php)를 수집한 사용자 PC 정보를 전송한다. 수집한 데이터 전송 후 naveicoipc[.]tech/7qsRn3sZ/7qsRn3sZ_[사용자명]_/fecommand.acm에 접속해, 해당 주소로부터 추가 데이터를 받아 다양한 악성 행위를 수행한다.
'Project > 2023 정보보호 소학회 세미나' 카테고리의 다른 글
'윈도우 도움말 파일(*.chm) 로 유포 중인 AsyncRAT' 분석 (0) | 2023.02.19 |
---|---|
'코로나 확진 안내문으로 사칭한 악성 도움말 파일 국내 유포' 분석 (0) | 2023.02.19 |
'윈도우 도움말 파일(*.chm)로 유포되는 APT 공격' 분석 (0) | 2023.02.19 |