2024-03-28 21:40 (목)
4.27 판문점 선언 내용으로 수행된 '작전명 원제로' APT 공격...김수키 작전과 오버랩
상태바
4.27 판문점 선언 내용으로 수행된 '작전명 원제로' APT 공격...김수키 작전과 오버랩
  • 길민권 기자
  • 승인 2018.05.29 16:06
이 기사를 공유합니다

ESRC "김수키 작전의 위협 벡터와 유사점 발견...동일 그룹 내에서 개별 작전으로 추정"

▲ 김수키 작전 계열의 악성파일과 금성121 그룹이 사용한 동일한 HWP 화면. 이스트시큐리티 제공.
▲ 김수키 작전 계열의 악성파일과 금성121 그룹이 사용한 동일한 HWP 화면. 이스트시큐리티 제공.
한국을 대상으로한 APT공격을 수행하고 있는 '작전명 김수키(Operation Kimsuky)'의 활동은 은밀하게 계속되고 있다. 사이버 공격은 남북관계의 온도차와는 관계없이 계속 되고 있다.

최근 정부 후원을 받는 공격자들의 한국 공격이 포착됐다. 5월에 수행한 최신 표적형 APT 사례다. 분석결과 김수키 작전에 사용된 '위협 벡터'(공격자가 침해대상에 사용한 접근수단)와 오버랩되는 점이 발견된 것이다.

이스트시큐리티 사이버 위협 인텔리전스(CTI) 전문조직인 시큐리티대응센터(이하 ESRC)는 이번 위협그룹과 개발코드가 남긴 단서를 종합적으로 분석해 이를 일명 '작전명 원제로(Operation Onezero)'로 명명했다. TTPs(Tactics/Tools, Techniques and Procedures) 기반으로 과거 유사 위협과의 관계 연결 포인트를 관찰한 결과다.

ESRC 분석 내용에 따르면, 이번 김수키 작전에서 사용된 공격 데이터가 '금성121(Geumseong121)' 위협그룹이 사용한 작전에서도 동일하게 사용된 것으로 분석했다.

초기 김수키 조직이 스피어피싱 공격을 수행할 때 발신지는 주로 중국 선양지점이었으며, 동일한 공격 데이터가 최근에는 일본 발신지에서 목격되었다.

▲ 이번에 발견되 악성 문서 파일이 실행된 후 보여지는 내용. 이스크시큐리티 제공.
▲ 이번에 발견된 악성 문서 파일이 실행된 후 보여지는 내용. 이스크시큐리티 제공. 판문점 남북정상회담 관련 내용으로 위장한 한글 문서.
한편 지난 5월 18일에 제작된 HWP(한글 문서) 포맷의 악성파일이 새롭게 발견되었고, 4.27 남북 정상회담 관련 내용이 포함되어 있었다.

해당 문서의 파일명은 '종전선언'이다. 배포용 문서설정 기능으로 암호가 설정되어 있다. 루트 경로의 날짜는 2017년 5월 20일로 설정되어 있지만, 실제 문서를 분석해 보면 생성된 시점은 2018년 5월 14일이며, 마지막 저장된 날짜는 5월 18일로 나타났다.

이 악성 문서는 보안기능이 설정되어 있다. 암호를 알기 전까지는 문서의 정보와 편집이 불가능하다. ESRC에서 해당 문서의 암호를 해독해 내부 코드를 분석했다.

스피어피싱 표적공격에 사용된 것으로 추정되는 이 악성 문서는 한국의 특정 대학원 특강 자료로 표기되어 있으며 '제2강 가야할 길: 통일을 지향하는 평화체제 구축'이라는 한국어 제목으로 시작된다.

또한 '북한의 핵개발과 전쟁위기 고조', '역사적인 판문점 남북정상회담(4.27)' 등의 내용도 포함되어 있어 판문점 선언 이후에 작성된 내용이라는 점을 알 수 있다.

문서 파일에는 총 9개의 'ViewText/Section' 스트림이 포함되어 있고, 'Section2'~'Section8' 스트림까지 쉘코드 영역이 존재한다.

'Section2'부터 'Section8' 스트림은 압축된 상태의 코드 사이즈가 '20,228' 크기로 모두 동일한 것을 알 수 있다. 7개의 섹션은 모두 동일한 쉘코드 영역을 가지고 있다. 해당 스트림 영역에 포함되어 있는 쉘코드는 디코딩 루틴을 통해 메모리에서 작동하게 된다.

디코딩된 쉘코드를 확인해 보면 윈도우에 정상적으로 존재하는 메모장 프로세스에 악의적인 모듈을 로드해 사용하는 것을 알 수 있다.

쉘코드가 정상적으로 작동하게 되면, HWP 내부에 포함되어 있는 커스텀 인코딩 루틴에 의해 임시폴더(Temp) 경로에 'core.dll' 파일을 생성하고, 메모장을 통해 로드를 하게 된다.

'core.dll' 모듈이 정상적으로 작동하게 되면 'fontchk.jse' 파일을 시작메뉴의 시작프로그램에 등록하고, 'wscript.exe' 명령을 통해 실행하게 된다. 참고로 'core.dll' 파일명은 이전의 김수키 작전에서 다수 사용된 파일명이기도 하다.

첫 번째 로드에 이용되는 악성 라이브러리 파일은 내부에 'OneDll.dll' 이름의 Export 함수를 가지고 있는 특징이 있으며, 0xC8 값으로 XOR 인코딩된 'fontchk.jse' 이름의 악성 스크립트 코드를 포함하고 있다.

인코딩된 상태와 디코딩된 상태를 비교해 보면 악성 스크립트 코드가 은밀하게 포함되어 있는 것을 알 수 있다. 또 공격에는 구글 드라이브가 명령제어(C2) 서버로 사용되었다는 것을 알 수 있다.

지난해 중순 경 발견된 유사한 변종 DLL 파일도 이번과 동일하게 구글 드라이브를 명령제어(C2) 서버로 사용한 바 있다. 하지만 이번에는 DLL 내부에 포함하지 않고 악성 스크립트를 이용한 방식으로 공격 벡터가 변경된 것으로 분석됐다.

'fontchk.jse' 파일은 특정 구글 드라이브 URL 주소 2개로 접속하고 각각 'brid.mki', '7za.exe' 파일을 'ProgramData' 폴더에 다운로드한다. 구글 드라이브 링크를 사용할 경우 일부 보안관제에서 화이트리스트로 분류되어 위협 요소로 탐지되지 않기 때문에 공격자가 이 부분을 적절히 활용한 것으로 추정된다.

'brid.mki' 파일은 암호화 압축된 ZIP 파일이며 내부에 'brid.ige' 파일이 포함되어 있다. 압축 암호는 'fontchk.jse' 악성 스크립트 코드에 '201805' 값으로 선언되어 있으며, 함께 다운로드되는 7-Zip Standalone Console 프로그램인 '7za.exe' 파일을 이용해 압축해제를 수행한다.

한편 스크립트 추가 명령에 의해 네덜란드의 특정 호스트로 접속을 시도해 2차 명령을 주고 받는데, 이 사이트를 통해 또 다른 악성 파일이 설치되도록 구성되어 있다.

암호화 압축되어 있던 'brid.mki' 파일은 압축해제 후 'brid.ige' 파일명으로 생성되고 로딩된다. 실제 이 파일은 DLL 형식을 가진 실행코드다. 이 파일의 Export 함수는 첫 번째 로드되는 악성 DLL 라이브러리의 'OneDll.dll' 이름과 유사하지만 'zerodll.dll' 이름으로 함수명이 선언되어 있다.

ESRC는 공격자가 사용한 네덜란드의 호스트를 조사하는 과정에서 몇개의 암호화된 파일을 발견했고, 악성 스크립트에서 사용한 'fontchk' 파일명과 유사한 'fontcheck.php' 파일이 존재하는 것도 발견했다. 더불어 '7za.exe' 압축해제 프로그램의 콘솔 파일도 동일하게 숨겨져 있는 것을 확인했다.

호스트에 숨겨져 있는 'boot', 'query' 파일은 DLL 라이브러리 파일이며, 2단계로 코드가 암호화되어 있다. 공격자는 추가 공격에 사용할 목적으로 암호화된 모듈을 은밀하게 서버에 보관 중이었던 것으로 ESRC는 추정하고 있다.

'query' 파일은 5월 16일 오후 10시 59분, 'boot' 파일은 5월 17일 오전 10시 54분에 제작되었다. 암호화되어 있던 'query' 파일을 복호화해 내부 코드를 분석해 보면, 정보수집 과정 중에 해외의 특정 음란물 사이트의 도메인 조건을 체크하는 기능이 존재한다.

ESRC는 작전명 김수키(Kimsuky) 쉘코드 유사도 및 연관성 분석도 실시했다. 지난 2014년 12월 한국의 전력기관에 시도된 HWP 취약점 악성파일의 쉘코드와 2018년 5월 발견된 HWP 취약점 파일의 쉘코드를 비교해 보면 100% 동일한 것을 알 수 있다. 2014년 전력기관 위협에 사용된 취약점은 김수키 계열로 이미 널리 알려져 있다.

이번 공격에 사용된 라이브러리 파일은 regsvr32.exe /s "%TEMP%core.dll" 명령을 통해 실행이 된다. 지난 2013년 8월에 제작된 김수키 시리즈의 악성 파일도 우연하게도 'core.dll' 파일명으로 발견된 바 있다.

5월 18일 '작전명 원제로(Operation Onezero)' APT 공격에 이용된 HWP 문서파일의 속성정보를 보면 마지막 저장한 사람의 이름은 'burari'다. 'burari'라는 단어는 인도의 특정 도시지명이기도 한데, 과거 김수키 작전에 활용된 악성 이메일 중 인도의 무료 웹 메일인 '@india.com' 서비스를 이용한 사례도 다수 존재한다.

한편 2017년 6월에 제작된 변종 중에 'Trigger.dll' Export 함수를 사용하는 것이 발견된 바 있다. 이 악성파일 역시 내부에 구글 드라이브 URL주소 2개를 이용해 명령제어(C2)를 수행한다.

그리고 한국의 특정 법무법인 사이트를 2차 명령제어(C2)서버로 사용한다. 흥미롭게도 여기서도 core 파일명으로 다운로드가 수행된다.

다운로드되는 'core' 파일은 암호화되어 있으며 복호화가 된후 실행이 되면 한국의 특정 압축프로그램 모듈로 위장해 실행된다. 이 변종들은 다수가 존재하는데 Export 함수명이 'Engine.dll'이다.

그 중 변종에는 'burari001@gmail.com' 이메일 등으로 통신을 시도한다. 현재부터 약 12개월 전쯤 암호가 변경되어 현재는 정상적으로 명령을 수행할 수 없다.

올해 5월 제작된 HWP 문서의 마지막 저장 계정명인 'burari' 문자와 유사한 형태의 이메일 'burari001@gmail.com' 형태가 동일한 위협 시리즈에서 사용되었다는 것도 흥미로운 점이다.

ESRC 측은 "국가 차원의 지원을 받는 것으로 추정되는 공격자의 활동은 현재도 계속 진행되고 있다. 금성121 그룹과 김수키 계열의 오퍼레이션에서 IoC간 오버랩된 부분을 다수 발견했고, 동일한 그룹에서 다양한 인력이 개별 작전을 수행하고 있다고 추정한다"며 "국가기반 위협그룹에 대한 체계적인 인텔리전스 연구와 추적을 통해 유사한 보안위협으로 인한 피해가 최소화될 수 있도록 관련 모니터링을 강화하고 있다"고 밝혔다.

★정보보안 대표 미디어 데일리시큐!★


■ 보안 사건사고 제보 하기

▷ 이메일 : mkgil@dailysecu.com

▷ 제보 내용 : 보안 관련 어떤 내용이든 제보를 기다립니다!

▷ 광고문의 : jywoo@dailysecu.com

★정보보안 대표 미디어 데일리시큐 / Dailysecu, Korea's leading security media!★