상세 컨텐츠

본문 제목

일본과 한국을 타겟으로 하는 Tick APT 조직, usb 감염을 통해 폐쇄망 공격

국내외 보안동향

by 알약(Alyac) 2018. 7. 2. 15:35

본문

Tick APT 그룹은 일본과 한국을 타겟으로 하는 APT 그룹입니다. 이 조직은 각종 악성코드(예 Minzen, Datper, Nioupala 및 HomamDownLoader)를 이용하는 것으로 알려져 있습니다. 


PaloAlto의 Unit 42는 이전에 이미 Tick Group에 대해 언급한 적이 있습니다. 그리고 최근 Unit42는 Tick group가 국내의 방위산업체가 만든 보안 USB를 공격 타겟으로 하는 것을 확인하였습니다.


보안 USB 드라이브의 무기화는 흔하지 않은 공격기술로, 이는 즉 인터넷에 연결이 되어 있지 않은 air-gapped 시스템을 감염시킬 수도 있습니다. 이 밖에도, 이 공격에 사용된 악성코드는 Microsoft WindowsXP또는 Windows Server 2003 환경만 감염을 시도하는 것으로 확인되었습니다. 이는 즉 인터넷에 연결되지 않은 시스템 중 Microsoft Windows의 지원이 종료된 시스템을 노리는 것으로 추정됩니다. air-gapped 시스템은 많은 국가의 정부, 국방조직 및 국방 하청업체 등에서 자주 사용됩니다. 


하지만 이번 공격에 대해 공식적인 보도자료가 없었기 때문에, Tick Group의 몇년간의 공격 중 이번 보고서에 공개된 악성코드를 실제로 사용 하였는지에 대해 의문을 갖고 있습니다. 


지금까지 수집한 정보들이 아직 완전하지 않기 때문에, 우리는 지금까지 연구한 자료들을 토대로 공격 상황에 대한 가설을 세워보았습니다. 


1) Tick Group가 어떠한 방법을 이용하여 USB 드라이버의 보안 매커니즘을 무력화 시키고, 악성파일을 로드합니다. 이 USB는 한국의 ITSCC인증을 획득한 USB 입니다. 

2) Tick Group은 SymonLoader라고 명명된 특정 악성코드를 생성하며,이는 구 버전의 Windows 시스템 상에서 동작하며 끊임없이 특정 USB 디바이스를 스캔합니다. 

3) SymonLoader는 WindowsXP와 Windows Server 2003만을 공격 대상으로 합니다. 

4) 만약 SymonLoader가 특정 유형의 보안 USB를 검색한다면, 파일시스템에 직접 엑세스 하는 API를 통하여 악성파일 로드를 시도합니다. 


다음에는 SymonLoader의 발견에 대해 설명할 것입니다. 우리는 현재까지 감염된 USB나 악성코드가 심어져 있는 시스템을 발견하지는 못했습니다. 그렇기 때문에 전체적인 공격 과정을 설명할 수 없습니다. 


또한 악성코드에 감염된 USB도, 악성파일 샘플도 확보하지 못하였기 때문에, 이 이 USB를 만드는 공급망이 감염이 된 건지, 아니면 제작된 후에 감염이 된 건지, 혹은 사회공학적 기법과 다른 방법을 이용하여 감염이 된 것인지 확인할 수는 없습니다. 


정상적인 프로그램을 위장한 악성코드


Unit 42는 아직까지 구체적인 감염과정을 밝히지는 못했으며, 대략적인 감염과정만 추정중에 있습니다. 


<이미지 출처 : https://researchcenter.paloaltonetworks.com/2018/06/unit42-tick-group-weaponized-secure-usb-drives-target-air-gapped-critical-systems/>


우선, 공격자는 정상 SW를 위장한 악성코드로 사용자를 속여 설치하도록 유도하는데, 이는 새로운 툴로 SymonLoader라 명명하였습니다. 


이 SW가 실행될 때, 로드된 프로세스는 감염된 디바이스 상의 저장매체의 변화를 모니터링합니다. 만약 SymonLoader가 보안 USB를 감지한다면, 이 보안 USB와 관련된 장치 드라이버를 통해 저장소에 접근을 시도하며, 디바이스 정보 문자열 중에서 특정 보안 USB 문자열을 검색합니다. 그 후 USB 상의 미리 정의해놓은 저장위치에 접근하며 알수없는 PE파일 압축을 해제합니다. 


작년 7월에 공개한 보고서처럼, Tick Group은 정상 프로그램을 가장한 악성코드와 HomamDownLoader라고 명명된 주입식 악성코드를 사용합니다. 공격자는 정상 프로그램을 위장한 악성코드를 피싱메일을 통해 유포하고, 이 악성코드가 실행되면 이 악성코드는 HomamDownLoader를 드랍하고 정상 프로그램을 설치하며, 실제로 정상적으로 동작합니다. 그렇기 때문에 실제 사용자는 이 파일이 악성파일임을 인지하지 못합니다. 


새로운 공격방식을 연구하던 중, 우리는 작년에 조사했던 블로그 내용보다 더 많은 한국어 SW가 포함된 것을 확인하였습니다. 2017년 7월에 발견한 샘플과 유사하게, 이번에 새로이 발견된 악성코드도 HomamDownLoader를 제거합니다. 동일하게 2017년 7월 연구 중 발견한 것처럼, HomamDownLoader는 원격 C2서버를 통해 또 다른 악성코드를 설치할 수 있습니다. 



보안 USB


SymonLoader는 먼저 타겟 시스템을 검색하고, 만약 이 시스템이 Windows XP 혹은 Windows Server2003보다 버전이 높다면 어떠한 행위도 하지 않습니다. PE헤더 중의 타임스탬프를 보면 악성코드의 생성일자는 2012년 9월 26일로 되어 있습니다. 만약 타임스탬프를 수정하지 않았다고 가정한다면, Windows7과 Windows 2008이 공개되었을 시점입니다. 


시스템 버전을 확인 후, SymonLoader은 “device monitor"라는 이름을 가진 모니터링 프로그램을 숨겨진 창으로 생성하는데, 이 창은 시스템 상의 저장매체의 변경여부를 모니터링하며, USB가 연결되었을 때 드라이버 문자 및 유형을 검사합니다. 

만약 드라이버가 A 혹은 B가 아니며, 드라이버 유형이 CDROM이 아니면, CreatFileAPI를 호출하고 저장매체의 헨들을 획득합니다. 


그 이후, 악성코드는 파일리스의 사용자정의 제어코드 0xE2000010를 사용하여 ,DeviceioControl().aspx함수를 호출합니다. 제어코드는 4가지의 각기 다른 값인 DeviceType, Function, Access, Method로 구성되어 있습니다.


이 예에서 DeviceType 값은 0xE200이고 계산결과 (0x0E2000010 & 0xffff0000) >> 0x10입니다. 


Microsoft에 따르면이 이 특정 DeviceType 값은 타사 공급 업체의 범위 내에 있어야합니다. 제대로 동작하려면, 악성 코드가 사용자 지정 컨트롤 코드 0xE2000010을 사용하여 DeviceIoControl ()을 호출하기 전에 타사 드라이버가 감염 시스템에 나타나야합니다. 그러나 어떠한 타사 드라이버인지는 다음 함수 중에서 그 실마리를 찾을 수 있습니다. 


<이미지 출처 : https://researchcenter.paloaltonetworks.com/2018/06/unit42-tick-group-weaponized-secure-usb-drives-target-air-gapped-critical-systems/>


SymonLoader는 IOCTL_SCSI_PASS_THROUGH 매개 변수를 사용하여 SCSI 쿼리 명령을 통해 장치 정보를 가져오며, 쿼리 데이터에서 공급 업체 또는 제품 ID의 특정 문자열을 검색하여 대상 장치인지 여부를 확인합니다.


이 검색에 사용된 문자열을 분석한 결과, 한국 방위 산업의 특정 회사 명칭과 문자열이 일치함을 확인할 수 있었습니다. 이 회사는 군사, 경찰, 정부 기관 및 공공 기관에서 사용하는 정보 및 통신 보안 장치를 개발하고 있으며,보도자료를 통해 자신들의 회사에서 개발한 보안 USB 저장 장치가 한국 IT 보안 인증 센터의 ITSCC인증에서 요구하는 보안요구사항을 모두 만족한다고 밝힌 적도 있습니다. 



숨겨진 모듈 로드


만약 SymonLoader가 자신이 실행중인 환경이 Windows XP 또는 Windows Server 2003 시스템이라는 것을 알게되고, 새로 연결된 장치가 특정 보안 USB드라이브 생성업체의 USB라는 것을 알게되면, 이 악성코드는 USB에서 알수없는 실행파일을 추출합니다. 만약 이 파일이 없어도 SymonLoader 및 타사 드라이버를 분석하여 정보를 수집 할 수 있습니다. 공격자는 알려지지 않은 실행 파일을 암호화하며 보안 USB 저장 장치의 끝 부분에서 미리 숨 깁니다. 이렇게 숨겨진 데이터는 ReadFiles()와 같은 파일조작 API를 통해 접근할 수 없습니다. 하지만 SymonLoader는  LBA와 SCSI명령을 사용하며 이동식 드라이버상에서 특정한 위치에서 데이터를 읽어올 수 있습니다. 


LBA는 간단한 선형 주소 지정 체계입니다. 저장소는 고정 된 크기의 블록으로 분할되며 각 블록들에는 볼륨 크기에 따라 0에서 N1까지로 나뉘게 됩니다. 응용 프로그램은 SCSI 명령을 통해 블록 번호를 지정하고 데이터에 액세스 할 수 있습니다.


마지막으로, SymonLoader는 추출 된 파일을 로컬 디스크 임시 디렉토리에 저장하고 실행합니다. 절차는 다음과 같습니다.


1) READ CAPACITY (10) 명령을 사용하여 "N-1"을 저장하기위한 최종 LBA 주소를 가져옵니다.


2) read (10) 명령을 통하여 맨 끝에서 세번째 블록인 "N-3"을 읽어오고 복호화합니다. 


3) 데이터 복호화 후, 메인 모듈이 있는 LBA "X"를 얻을 수 있습니다. 


4)  read (10) 명령을 통해 LBA "X"에서 "N-4"를 로드하고 복호화 합니다. 


5) 복호화 한 파일을 % Temp % [임의 문자] .tmp로 저장하고 실행합니다. 


6) Save (10) 명령을 사용하여 대상 시스템의 호스트 이름과 현지 시간을 LBA "N-2"에  입력합니다. 


<이미지 출처 : https://researchcenter.paloaltonetworks.com/2018/06/unit42-tick-group-weaponized-secure-usb-drives-target-air-gapped-critical-systems/>



결론


Tick Group이 사용하는 정상적인 프로그램을 위장하여 사용자를 속여 설치를 유도하며, 이 악성코드의 대부분은 HomamDownLoader 입니다. 이 연구 중에서 우리는 이전의 악성코드 로더가 삭제된 것을 확인하였으나, 이는  HomamDownLoader가 아닌 몇 년전 공격에서 사용했던 것으로 추정하고 있습니다. HomamDownloader와 다른 점은, HomamLoader는 C2서버에 연결을 해야만 다른 스크립트들을 내려받을 수 있으며, SymonLoader는 감염 시스템에 접근하였을 때 특정 유형의 보안 USB중에서 알 수 없는 숨겨진 파일을 추출하고 설치하려고 시도합니다. 이러한 기술은 다른 공격 방식에서 자주 사용하지 않는 방식입니다. 


비록 보안 USB에 파일 복사본이 숨겨져 있지는 않지만, 우리는 이 파일이 악성이라고 확신할 수 있었습니다. 보안 USB드라이브의 무기화는 흔하지 않는 기술로, air-gapped 시스템을 공격하기 위한 것으로 추정됩니다. 폐쇄망들은 일반적으로 구 버전의 os를 사용하는 경우가 많은데, 인터넷에 연결되어있지 않아 쉽게 업데이트를 할 수 없기 때문입니다. 사용자가 외부 서버에 접속할 수 없기 때문에, 대부분 물리적인 저장매체를 이용하며, 특히 USB를 이용하여 데이터들을 전송하여 쉽게 이러한 위협에 노출될 수 있습니다. 


현재 알약에서는 해당 악성코드들에 대하여 Trojan.Downloader.Agent, Trojan.Dropper.Agent 등으로 탐지중에 있습니다. 





출처 : 

https://researchcenter.paloaltonetworks.com/2018/06/unit42-tick-group-weaponized-secure-usb-drives-target-air-gapped-critical-systems/

관련글 더보기

댓글 영역