요약 - 이번 달 MITRE는 ATT&CK 프레임워크에 두 가지 테크닉을 추가할 예정
- 북한이 즐겨 사용하고 있는 공격 전략인 TCC 악용과 팬텀 DLL 하이재킹
내용 - 북한의 해커들은 두 가지 공격 기법을 활용
> 맥OS와 윈도 환경에 불법적으로 접근 및 권한 탈취
> 이후 피해자를 염탐하여 정보 수집 등 필요한 악성 행위 실시

① 맥OS 대상: TCC 악용
- TCC는 일종의 데이터베이스 
> 사용자 층위의 데이터베이스: ‘전체 디스크 접근 권한(FDA)’ 혹은 그에 준하는 권한을 가지고 있어야 TCC에 접근가능
> 시스템 층위의 데이터베이스: ‘시스템 무결성 보호(SIP)’라는 기능을 통해 제어가 가능
> TCC에 접근하려면 FDA나 SIP 혹은 그에 상당하는 높은 수준의 권한을 가지고 있어야 한다는 뜻

- 그러나, 권한을 무시하고 접근할 수 있게 해 주는 방법들이 존재
> SIP의 경우 공격자들이 피해자의 시스템에 침투하여 다른 공격 기법을 통해 비활성화시킬 수 있음
> 스스로에게 FDA 권한을 줄 수도 있음

- TCC를 겨냥한 멀웨어들이 이미 다크웹에 여럿 존재
> 가장 중요한 건 SIP를 항상 활성화시켜두는 것이라고 강조

② 윈도우 대상: 팬텀 DLL 하이재킹 (Phantom DLL Hijacking)
- 윈도는 실존하지 않는 DLL 파일들을 자꾸만 참조하는 이상한 오류 존재
> 프로젝트를 위해 생성한 DLL을 프로젝트 종료 후 DLL을 전부 삭제하지 못하는 등의 경우 발생
> 윈도는 참조하는데 정작 존재하지는 않는 DLL 파일들을 ‘팬텀 DLL 파일(유령 DLL 파일)’이라고 부름

- 공격자 악용 방식
> 자신들의 목적에 맞는 악성 DLL 파일을 임의로 생성
> 윈도가 참조하고 있는 유령 DLL 파일과 똑같은 이름으로 설정
> 그 DLL 파일과 같은 위치에 옮겨두면 OS가 알아서 로딩
> 윈도가 참조하는 것이므로 보안 경보 울리지 않음

- MS가 직접 윈도의 ‘유령 DLL 참조 현상’을 제거해야 한다고 강조
> 그 전까지 윈도 사용자들은 모니터링을 철저히 수행할 필요
> 애플리케이션 제어도 보다 능동적으로 수행할 필요
> 원격에서 DLL을 로딩시키는 것 또한 차단할 필요
기타 - 라자루스 멀웨어 전략
> TCC 데이터베이스의 접근 테이블을 덤핑하는 기능과 SIP 비활성화 기능 포함
> IKEEXT와 같이 함께 팬텀 DLL 하이재킹 기능 구현: IKEEXT 실행 후 존재하지 않는 DLL 로딩 시도

 

보안뉴스

 

북한이 최근 사용하는 공격 전략, 조만간 마이터 서브테크닉에 추가된다

이번 달 마이터(MITRE)는 어택(ATT&CK) 프레임워크에 두 가지 테크닉을 추가할 예정이다. 이 두 테크닉 모두 북한의 해킹 조직들이 이미 즐겨 사용하고 있는 것으로, 하나는 애플 맥OS 내에서 애플리

www.boannews.com

 

1. 3CX

- 영상 회의 솔루션인 PBX와 기업용 통신 앱(윈도용, 맥OS용, 리눅스용)인 3CX 데스크톱앱을 제공하는 벤더사

 

2. 취약점

- 3CX는 전 세계 60만 개 기업이 고객사로 알려져 있으며, 솔루션을 사용하는 사람은 매일 약 1200만 명으로 알려짐

- 다수의 보안 업체에서 3CX 데스크톱앱 바이너리의 정상 업데이트 파일에서 수상한 행동 패턴의 확인을 알렸고, 관련 조사를 통해 확인

- 국내 모 대학에서 공급망 공격이 알려지기 이전에 18.12.407 버전과 18.12.416 버전의 3CX Electron Windows App 설치 로그 확인

- 북한의 라자루스(Lazarus)로 추정되는 해킹 그룹이 CVE-2013-3900 및 고푸람 멀웨어를 이용, 윈도우와 맥 사용자들을 대상으로 3CX의 VoIP 데스크톱 애플리케이션을 침해

고푸람(Gopuram)
- 2020년 동남아시아 암호화폐 기업에서 최초 발견된 백도어
- 여러 기능을 가진 모듈을 포함: 데이터 탈취, 추가 멀웨어 설치, 임의 서비스 시작, 종료 및 삭제, 피해자 시스템의 직접 제어 권한 등
- 애플제우스(AppleJeus)라는 또 다른 백도어가 함께 설치
- 고푸람, 애플제우스 모두 라자루스와 연관

 

영향받는 제품 및 버전
① Electron Windows application shipped in Update 7
- 18.12.407
- 18.12.416

② Electron macOS application
- 18.11.1213
- 18.12.402
- 18.12.407
- 18.12.416

 

2.1 CVE-2013-3900

- 2013년에 발견되고 패치된 취약점

- 당시 MS의 설명에 따르면, 익스플로잇에 성공한 공격자들은 서명된 실행파일에 악성 코드를 삽입할 수 있게 된다고함

- MS는 윈도 오센티코드(Windows Authenticode)로 서명된 바이너리들의 인증 방식 자체를 변경

> 서명된 바이너리를 누군가 변경하면 해당 바이너리를 더 이상 서명된 바이너리로 윈도우가 인식하지 않도록 한 것

> ‘옵트인’ 방식으로 이루어졌으며, 사용자들이 패치를 적용할 것인지 말 것인지를 선택하도록 함

 

2.2 공격 방식

- 애플리케이션의 설치 패키지(MSI 파일) 내에 있는 두 개의 DLL이 공격자에 의해 감염

- 3CX의 인증서로 서명되어 있었으며, 자동 업데이트를 통해 DLL 파일을 유포

- 유포된 DLL은 추가 악성 파일을 설치 및 실행하여 정보 유출형 악성코드 인포스틸러 설치

 

- 공격 방식은 다음과 같음

① 침해된 파일 3CXDesktopApp.exe가 실행되면, DLL Side-Loading 기법으로 ffmpeg.dll이 로드

> ffmpeg.dll: d3dcompiler.dll에서 악성쉘 코드를 읽고 로드 및 실행하기 위해 사용되는 트로이목마 DLL

 

② ffmpeg.dll은 다시 d3dcompiler.dll을 DLL Side-Loading 기법으로 로드

> d3dcompiler.dll: 입력된 16진수 문자열 뒤에 암호화된 쉘코드가 추가된 DLL

[사진 1] d3dvompiler.dll 로드 과정

 

③ d3dcompiler.dll은 쉘코드를 복호화해 C2 접근을 위한 ICO 파일이 있는 GitHub 저장소 엑세스

> 3jB(2bsG#@c7 키와 함께 RC4를 사용하여 악성 쉘코드 복호화

> GitHub에 엑세스하지 못하면 프로세스 종료

> GitHub 저장소: raw[.]githubusercontent[.]com/IconStorages/images/main/icon[.]ico_현재는 삭제되어 접속 불가

[사진 2] 하드코딩된 GitHub 저장소

 

④ ICO 파일을 이용해 C2 엑세스 시도

- Window

> ICO 파일: Based64 인코딩 및 AES+GCM 암호화 사용

> ICO 파일의 뒷부분에는 실제 C&C 서버의 주소들이 인코딩되어 존재하며, 이를 복호화 할 경우 실제 C&C 서버 주소가 확인

[사진 3] 공격에 사용된 ICO 파일

 

> 다운로더는 ICO 파일의 뒷부분에서 “$” 시그니처를 검색한 후 인코딩된 문자열을 찾아 복호화

[사진 4] ICO 파일에 삽입된 인코딩 데이터

 

[사진 5] 복호화된 C2 주소

 

- MAC

> 공격자는 DMG 설치 파일에 악성코드를 삽입

[사진 6] MAC 공격에 사용된 파일

 

> 설치 파일 내부에 존재하는 공유 라이브러리 파일들 중 libffmpeg.dylib 파일에는 C&C 주소가 XOR 인코딩되어 저장되어 있음

[사진 7] XOR 인코딩된 C2 주소 목록

 

⑤ 인포스틸러 멀웨어로 정보 수집

> 지정된 애플리케이션이 아닌 임의 애플리케이션에 의해 로드되면 에러 발생

> 3CXDesktopApp 폴더에서 config.json 파일을 확인하여 호스트 이름, 도메인 이름, OS 버전 정보 수집

[사진 8] config.json 확인

> 미리 정의된 문자열 목록을 이용해 Chrome, Edge, Brave 브라우저의 History 및 FireFox의 places.sqlite 정보 수집

[사진 9] 미리 정의된 문자열 목록

 

[사진 10] 공격 방식 요약

2.2.1 DLL Side-Loding 기법

- 안티바이러스 S/W에 의해 탐지되는 것을 우회하여 악성코드를 전파하기 위해 사용하는 기법 중 하나

- 윈도우 OS의 DLL loading 메카니즘을 악용한 기법

 

- 윈도우 애플리케이션 실행 과정에서 필요한 시점에 동적으로 라이브러리를 호출하는데, 이를 DLL (Dynamic Linking Library)이라 함

- 이때, 필요한 DLL의 이름은 애플리케이션에 따라 내부에 명시되어 있거나, 없을 수도 있음

- 만약 DLL이 애플리케이션 내부에 명시되어 있지 않은 경우 OS에 미리 정의된 순서에 따라 DLL을 찾음

Window OS의 DLL 검색 순서
① Application이 load 된 Directory
② 현재 Directory
③ 시스템 Directory
④ 16비트 시스템 Directory
⑤ Windows Directory
⑥ PATH 환경 변수에 나열된 Directory

 

- DLL 검색 순서를 악용해, 특정 애플리케이션이 사용하는 DLL이 아닌 악성코드가 포함된 DLL을 OS가 먼저 검색하여 실행하도록하는 기법

- 단, 악성 DLL의 이름정상 DLL의 이름동일해야 함

 

3. 조사 보고서

- MANDIANT는 해당 사건에 대한 분석 보고서를 발표

- 해당 공격은 과거 발생한 1차 공급망 공격이 2차 공급망 공격으로 이어진 최초의 사례

[사진 11] 공격 과정 요약

 

3.1 내용 요약

① 최초 침입 벡터: 트레이딩 테크놀로지스(Trading Technologies) 소프트웨어 엑스트레이더(X_TRADER) 설치 패키지

- 엑스트레이더는 금융거래를 목적으로 사용하는 소프트웨어

- 공격자는 모종의 사유로 트레이딩 테크놀로지스를 침해해 엑스트레이더 설치 패키지를 감염

> 공격에 사용된 파일명: X_TRADER_r7.17.90p608.exe (MD5: ef4ab22e565684424b4142b1294f1f4d)

> 엑스트레이더는 2020년 서비스가 종료되었지만, 웹 사이트에서 2022년에도 다운로드가 가능했음

> 또한, 감염된 소프트웨어에를 서명하는데 사용된 인증서는 2022.10 만료되도록 설정

 

② 3CX 직원이 감염된 설치 패키지 다운 및 실행

- 감염된 소프트웨어 설치파일 setup.exe를 실행 및 악성 파일이 추출되어 백도어 설치

> SIGFLIP: RC4로 페이로드를 해독하고 바이트 시퀀스 FEEDFACE를 사용하여 쉘코드 검색

> DAVESHELL: 드로퍼 역할을 수행하는 쉘코드

> VEILEDSIGNAL (MD5: c6441c961dcad0fe127514a918eaabd4): C2 통신을 위한 백도어로, C2 주소 하드코딩

 

③ 공격자의 내부 이동 및 공격 지속성 유지

- 백도어와 오픈 소스 FRP를 이용해 3CX 내부를 이동하며 자격 증명을 수집

> FRP: NAT 또는 방화벽 뒤에 있는 로컬 서버를 인터넷에 노출할 수 있는 빠른 역방향 프록시

- 공격을 지속하기 위해 추가작업 수행

> Window: Taxhaul 멀웨어로 DLL 사이드로딩을 사용하여 지속성을 달성하고 탐지 가능성을 줄이며, Coldcat 다운로더를 배포

> Mac: POOLRAT 백도어로 지속성 달성

 

④ UNC4736 공격 그룹

> 3CX 공급망 공격과 트레이딩 테크놀로지스 공급망 공격의 배후를 모두 북한 해킹그룹으로 추정되는 UNC4736로 지목

 

⑤ 3CX는 공격을 탐지하는 데 사용할 수 있는 YARA 규칙 및 IoC 공유 

 

4. 대응방안

① 벤더사 관련 공지 참고

> 3CX에서는 현재 새로운 인증서 발급 준비 중이며, 인증서 발급 전까지 PWA 애플리케이션을 대신 사용할 것을 권장

> PWA 설치 가이드: https://www.3cx.com/blog/releases/web-client-pwa/

 

② 관련 프로그램 삭제

> 제어판 > 프로그램 및 기능 > 3CX Desktop App 제거

 

③ 공개된 IoC 정보 등을 보안 장비에 적용 및 모니터링

 

④ CVE-2013-3900 패치를 찾아 적용

> 윈도 11의 경우 해당 패치를 적용하였더라도, 재적용 필요_새 버전의 OS가 패치를 되돌리기도 하기 때문

 

⑤ 안티바이러스 S/W, OS 최신 버전 업데이트 등의 기본 보안수칙 준수

 

5. 참고

[1] https://www.trendmicro.com/en_us/research/23/c/information-on-attacks-involving-3cx-desktop-app.html
[2] https://www.sentinelone.com/blog/smoothoperator-ongoing-campaign-trojanizes-3cx-software-in-software-supply-chain-attack/
[3] https://www.kaspersky.com/blog/supply-chain-attack-on-3cx/47698/
[4] https://www.bleepingcomputer.com/news/security/cryptocurrency-companies-backdoored-in-3cx-supply-chain-attack/
[5] https://www.bleepingcomputer.com/news/security/hackers-compromise-3cx-desktop-app-in-a-supply-chain-attack/
[6] https://symantec-enterprise-blogs.security.com/blogs/threat-intelligence/3cx-supply-chain-attack
[7] https://asec.ahnlab.com/ko/50797/
[8] https://www.boannews.com/media/view.asp?idx=116815&page=1&kind=1
[9] https://www.boannews.com/media/view.asp?idx=116779&page=1&kind=1
[10] https://www.boannews.com/media/view.asp?idx=115665&kind=1&search=title&find=3cx 

[11] https://www.boannews.com/media/view.asp?idx=116997&kind=1&search=title&find=3cx

[12] https://asec.ahnlab.com/ko/50965/

[13] https://www.mandiant.com/resources/blog/3cx-software-supply-chain-compromise

[14] https://github.com/fatedier/frp

[15] https://www.boannews.com/media/view.asp?idx=117351&page=3&kind=1 

1. INISAFE CrossWeb EX V3

- 이니텍에서 제작하였으며, 공동인증서를 사용해 로그인하거나 전자서명할 때 쓰이는 S/W

- 국내 금융기관 및 쇼핑몰 등 다수 홈페이지에서 사용자 인증서 처리를 위해 주로 사용

- 사용자가 홈페이지에 접속하면 자동 설치됨

 

2. 취약점

- 작년말 북한이 해당 S/W의 취약점을 악용해 PC 해킹 및 악성코드 유포 등 해킹한 사실이 국정원·경찰청·KISA 등 유관기관에 의해 적발

- 국가·공공기관 및 방산·바이오업체 등 국내외 주요기관 60여곳의 PC 210여대를 해킹한 사실을 확인

- 해킹에 악용된 S/W는 국내외 1,000만대 이상의 기관·업체·개인 PC에 설치되어 있는 것으로 추정

- 대규모 피해 확산 방지를 위해 관계기관과 합동으로 관련 사실을 공지

영향받는 버전
- INISAFE CrossWeb EX V3 3.3.2.40 이하 버전

 

2.1 취약점 상세

- 해당 취약점은 INITECH사 프로세스(inisafecrosswebexsvc.exe)에 의해 악성 행위가 발생되는 것으로 확인됨

피해 시스템의
inisafecrosswebexsvc.exe
특징
- INITECH사의 보안 프로그램인 INISAFE CrossWeb EX V3의 실행 파일
- 정상 파일과 같은 해시값을 가짐 (MD5:4541efd1c54b53a3d11532cb885b2202)
- INITECH사에 의해 정상 서명된 파일
- INISAFE Web EX Client로 침해 시점 이전부터 시스템에 설치되어 있었으며, 변조의 흔적 또한 발견되지 않음
- 시스템 부팅 시 iniclientsvc_x64.exe에 의해 실행되는데, 침해 당일에도 같은 방식으로 실행

 

- 악성코드인 SCSKAppLink.dll이 inisafecrosswebexsvc.exe 프로세스에 인젝션되어 동작

※ DLL 인젝션: 다른 프로세스의 주소 공간 내에서 DLL을 강제로 로드시킴으로써 코드를 실행시키는 기술

- SCSKAppLink.dll에는 호스트 프로세스에 따라 분기하는 코드가 포함

 

[사진 1] 분기 코드

 

- 분기 코드는 inisafecrosswebexsvc.exe 프로세스에 인젝션되어 동작하는 경우 특정 C2에 접속하여 추가 악성코드를 다운 및 실행

※ svchost.exe, rundll32.exe, notepad.exe에 인젝션 여부를 판단하도록 돼있으나, 해당 분기문에는 실행 코드가 포함되지 않음

 

[사진 2] 호스트가 inisafecrosswebexsvc.exe인 경우 접속하는 C2 주소

 

- C2에 접속하여 임시폴더에 악성코드 main_top[1].htm 다운로드 후 특정 경로에 복사

> 다운로드 경로 : c:\users\<사용자>\appdata\local\microsoft\windows\inetcache\ie\zlvrxmk3\main_top[1].htm

> 복사된 경로 : C:\Users\Public\SCSKAppLink.dll

 

[사진 3] 동작 과정

 

3. 대응방안

① 서비스 운영자: 이니텍를 통해 최신버전 교체_INISAFE CrossWeb EX V3 3.3.2.41

 

② 제품 사용자: 취약한 버전이 설치되어 있는 경우 제거 후 최신버전 업데이트를 진행

> [제어판]-[프로그램]-[프로그램 및 기능]에서 INISAFE CrossWeb EX V3 버전 확인 후 제거 클릭

> 아래 링크를 참고하여, 운영체제에 맞는 최신 버전의 INISAFE CrossWeb EX V3를 설치

※ Windows 클라이언트(v3.3.2.41_32bit) : http://demo.initech.com/initech/crosswebex_pack/3.3.2.41/INIS_EX_SHA2_3.3.2.41.exe

 

③ 침해지표 IoC 보안 장비 적용 [3]

 

3.1 기타사항

① 국정원 조치

> 올해 1월 긴급 대응에 착수, 해당 악성코드의 작동 원리 등에 대한 상세 분석을 완료

> 해당 분석 자료를 근거로 A사와 협조해 실제 공격-방어 시현을 진행하는 등 보안 패치 개발을 완료

> 현재 해당 프로그램을 사용 중인 공공·금융기관을 대상으로 관계기관들과 함께 보안 패치를 진행 중

> 국민 대상 보안 프로그램을 최신 버전으로 신속하게 업데이트 강조

> 23.04.05일 판교 사이버안보협력센터에서 ‘금융보안 SW 침해사고 방지 를 위한 유관기관 간담회’를 개최

※ 과학기술정보통신부·경찰청·KISA·금융감독원·금융보안원 등 정부기관 및 12개 금융보안 SW 제조사가 참여

※ 최신 해킹사례를 공유하고, 유사 사례 재발을 막기 위한 대책을 논의할 계획

>  관계기관과의 적극적인 사이버위협 정보 공유 및 협력을 통해 북한의 해킹위협에 선제적으로 대응할 것

 

② 이니텍 조치

> 지난 1월 독일 보안 전문가 블라디미르 팔란트의 게시글 이미지에 자사 제품이 있어 취약점 점검 및 취약점 확인

> 취약점 발견 후 이를 보완하는 와중에 국정원에서 연락이 옴

> 2월20일 문제가 된 취약점을 완화하는 보안패치 개발을 완료해 배포 중_현재 40%가량의 기업들이 패치를 완료한 상태

 

4. 참고

[1] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71030&menuNo=205020
[2] https://www.ncsc.go.kr:4018/main/cop/bbs/selectBoardArticle.do?bbsId=SecurityAdvice_main&nttId=32172&pageIndex=1#LINK
[3] https://asec.ahnlab.com/ko/33706/
[4] https://asec.ahnlab.com/ko/50727/
[5] https://www.boannews.com/media/view.asp?idx=115670
[6] https://www.boannews.com/media/view.asp?idx=115658
[7] https://www.ddaily.co.kr/news/article/?no=260579
[8] https://www.news1.kr/articles/5000945

1. MagicLine4NX

- 드림시큐리티에서 제작한 Non-PlugIn 기반의 인증서 인증, 전자서명, 웹구간 암복호화 솔루션

 

2. 취약점

- MagicLine4NX에서 입력값 검증 미흡으로 인해 발생하는 버퍼오버플로우 취약점

- 이를 악용해 공격자는 악성코드 유포, 원격 명령 실행 등의 악성 행위를 할 수 있음

- 라자루스 해킹조직이 악성코드 유포에 MagicLine4NX 취약점을 악용한 사례가 확인됨

영향받는 버전
- MagicLine 4.0 1.0.0.1 ~ 1.0.0.26 버전

 

2.1 취약점 상세

- MagicLine4NX는 시작 프로그램에 등록됨

- 프로세스가 종료되더라도 특정 서비스 (MagicLine4NXServices.exe)에 의하여 재실행되며, 한번 설치되면 프로세스에 항상 상주

 

- 라자루스 해커그룹의 공격 방식은 다음과 같음

① MagicLine4NX 취약점을 통해 svchost.exe 프로세스에 인젝션

악성 프로그램 다운로드 및 실행

[사진 1] 공격 방식

3. 대응방안

① 최신버전 업데이트 적용

- MagicLine 4.0 1.0.0.27 버전

※ MaginLineNX가 설치되어 있는 경우 삭제 후 재설치

 

② 취약한 버전의 MagicLineNX가 설치된 경우 삭제조치

- 버전 확인 방법

> [내 컴퓨터] – [로컬 디스크(C:\)] – [Program Files(x86)] – [DreamSecurity] – [MagicLine4NX] 경로로 이동
> MagicLine4NX에 마우스 오른쪽 버튼 클릭 – 속성 – 자세히 탭 클릭 – 파일 버전 확인

 

- 프로그램 삭제 방법

> [시작] - [시스템] - [제어판] - [프로그램 및 기능] - MagicLineNX 선택 - [제거] 클릭

> [내 컴퓨터] - [로컬 디스크(C:\)] - [Program Files(x86)] - [DreamSecurity] - [MagicLin4NX] 경로로 이동 - MagicLine4NX_Uninstall.exe 프로그램 실행

 

4. 참고

[1] https://asec.ahnlab.com/ko/50134/
[2] https://www.ncsc.go.kr:4018/main/cop/bbs/selectBoardArticle.do?bbsId=SecurityAdvice_main&nttId=27568&pageIndex=1#LINK
[3] https://www.boho.or.kr/kr/bbs/view.do?searchCnd=&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=1&categoryCode=&nttId=71023
[4] https://www.boannews.com/media/view.asp?idx=115500&kind=1&search=title&find=%BA%CF%C7%D1 \

1. BYOD (Bring Your Own Device)

- 개인 소유의 스마트기기 또는 모바일 장비를 이용해 회사 데이터베이스와 애플리케이션 등에 액세스해서 업무를 처리하는 것을 의미

- 기업은 하드웨어 교체 비용, 소프트웨어 라이선스 구입 및 유지 비용 등을 절감 가능

- 장소나 시간에 관계 없이 개인 기기에서 자유롭게 업무 문서를 열람 가능하여 생산성과 업무 속도 개선

 

2. BYOVD (Bring Your Own Vulerable Device)

- BYOD (Bring Your Own Device)에서 파생된 단어로, 취약점이 존재하는 드라이버를 포함하고 있는 프로그램을 악용

> 최신 윈도우 운영체제에서는 더 이상 서명되지 않은 드라이버 로드는 불가

> 그러나, 합법적으로 서명된 드라이버 모듈은 로드할 수 있음

> 이러 악용하여 취약한 공급업체의 드라이버 모듈로 커널 메모리를 조작

 

- 합법적인 서명을 포함하고 있어 윈도 운영체제에서 정상적으로 구동되지만 사실은 취약점이 있는 드라이버를 활용해 공격 대상의 시스템에 접근 권한을 얻는 방식의 공격 기법

- 즉, 개인의 기기에 설치된 특정 소프트웨어의 보안패치가 미적용된 환경을 이용하는 공격 유형

- 드라이버의 권한을 이용하므로 커널 메모리 영역에 읽고 쓰는 것이 가능해, 백신 및 PC 모니터링 시스템 등도 무력화 가능

 

2.1 북한 라자루스 그룹의 ene.sys 드라이버를 악용한 루트킷 배포 [1]

- ENE Technology에서 제작한 ene.sys 드라이버 모듈은 오픈소스인 WinIO 라이브러리로 작성됨

- 유저 영역에서 커널의 물리 메모리와 I/O 포트에 직접 접근을 가능하게 해주는 모듈

 

- 드라이버의 물리 메모리 접근 방식은 “ZwMapViewOfSection” API를 통한 공유 메모리 매핑 방식

- 메모리 매핑은 드라이버의 기능에 따라 필요 여부가 나뉘지만, 해당 기능을 사용하려면 드라이버를 호출하는 프로세스에 대한 검증이 철저히 이루어져야

 

2.1.1 호출 프로세스 검증 로직

① SB_SMBUS_SDK.dll 모듈 로드 검증

- ene.sys는 드라이버 실행 시점에 “PsSetLoadImageNotifyRoutine” API를 호출하여 모듈 처리와 관련된 콜백 루틴을 커널에 등록

- 콜백루틴은 프로세스가 로드하는 모듈이 SB_SMBUS_SDK.dll 인지 확인하고, 맞다면 해당 프로세스를 신뢰할 수 있는 프로세스로 인지하여 PID 정보를 ene.sys 전역변수에 저장

- 신뢰할 수 있는 프로세스가 되어 프로세스와 ene.sys 간 IOCTL 통신을 할 수 있게됨

※ IOCTL

> 컴퓨터 사용자와 커널을 잇는 인터페이스의 일부

> 사용자 공간의 코드가 하드웨어 장치, 커널 구성 요소와 통신할 수 있게 도와주는 역할

 

② AES 암호화가 이용된 IOCTL 통신 및 호출시간 검증

- 유저 영역의 프로세스가 ene.sys에 물리 메모리 매핑을 요청하기 위해서는 특정 IOCTL 값 (0x80102040)_WINIO_PHYSICAL_MEMORY_INFO_EX 구조체 정보를 드라이버에 전달하여 검증을 받음

typedef struct
_WINIO_PHYSICAL_MEMORY_INFO_EX {
중략
ULONG_PTR BusAddress; // 메모리 매핑을 원하는 물리 메모리 주소
중략
UCHAR EncryptedKey[16]; // 현재 시간 값에 대한 AES-ECB로 암호화한 값
} WINIO_PHYSICAL_MEMORY_INFO_EX, *
PWINIO_PHYSICAL_MEMORY_INFO_EX;

- 검증은 구조체 중 EncryptedKey변수를 이용하며, IOCTL 호출 시점의 시각IOCTL을 드라이버로부터 전달받아 처리한 시간차이가 2ms 미만일 경우 유효한 것으로 인지 후 IOCTL 처리

[사진 1]&nbsp;ene.sys의 호출자 및 유효 데이터 검증 절차

- ene.sys 드라이버 모듈은 유저 영역에서 물리 메모리 영역 매핑과 관련된 다음 취약점이 존재

> 오래된 오픈 소스 라이브러리 사용

> 자유로운 메모리 영역 접근

> 해당 모듈을 호출한 프로세스와 데이터의 유효성 검증 취약

※ ene.sys는 MSI 의 RGB 램 모듈을 제어하는 모듈로 위장되어 악성코드가 배포되고 있음

 

2.1.2 루트킷 악성코드

- 루트킷 자체는 로더 내 DLL로 위치하여 실행 시 ene.sys를 이용해 루트킷의 PreviousMode 주소 값을 0으로 변조

> PreviousMode 값이 0일 경우 God Mode로, 유저 영역과 커널 영역 모두 사용이 가능

- 이후 공격자는 커널 메모리를 조작하여 시스템 내 보안 시스템을 무력화 등 악성행위 수행

PreviousMode
- 유저 영역에서 동작하는 프로세스가 Nt 또는 Zw 계열의 함수를 호출할 경우
- Zw 계열의 함수는 동일한 기능을 수행하는 Nt 계열의 함수로 매핑
- Nt 계열의 함수는 호출한 드라이브가 유저 영역에서 호출한 것인지, 커널 영역에서 호출한 것인지를 확인
- 호출 위치를 판단하는데 PreviousMode 필드의 값을 통해 결정
- 호출 위치가 유저 영역일 경우 유저 영역의 메모리를 사용하게되고, 커널 영역일 경우 유저 영역과 커널 영역 모두 사용 가능함

 

[사진 2] 루트킷 동작 과정

 

3. 대응방안

① 엄격하게 드라이버 로드를 차단

- 일반 사용자 환경에서는 드라이버 로드를 하지 못하도록 통제

- MS는 윈도우 업데이트로 제공하는 취약 드라이버 차단 목록(Microsoft Vulnerable Driver Blocklist)과 HVCI(Hypervisor-Protected Code Integrity)를 통해 확인된 보안 취약점이 있는 드라이버가 기본적으로 차단

> 여러 보안 업체는 윈도우에 대한 계속되는 BYOD 공격과 취약한 드라이버 차단 목록이 정기적으로 업데이트되지 않는 것을 발견

 

② 보안 소프트웨어 업데이트를 최신으로 유지

 

4. 참고

[1] https://asec.ahnlab.com/ko/38593/
[2] https://www.itworld.co.kr/tags/81258/MFA/273211
[3] https://www.ejanews.co.kr/news/articleView.html?idxno=307927
[4] https://www.dailysecu.com/news/articleView.html?idxno=139976
[5] https://www.microsoft.com/en-us/security/blog/2021/12/08/improve-kernel-security-with-the-new-microsoft-vulnerable-and-malicious-driver-reporting-center/

+ Recent posts