# 라이브러리 파일 이용 국내 기업 APT 공격 **asec.ahnlab.com/ko/22975/** 2021년 5월 13일 최근 국내 기업들을 대상으로 지속적인 타깃 공격이 발생하였다. 기업의 침해 시스템에서 수 집된 악성 파일 중 상당수는 동적 라이브러리(DLL) 파일이었다. 그러나 이번 공격에 사용된 파 일은 일반적인 DLL 파일과는 달랐다. 수집된 파일은 정상 라이브러리가 다양한 방식으로 악의 적으로 변조된 파일이었다. 어떤 경로로 시스템에 악성 파일이 생겼는지, 최초 공격 유입 경로는 무엇이었는지는 알려지 지 않았다. 또한 단독 실행이 불가능한 라이브러리 특성상 이를 실행하는 트리거 행위나 추가 파일 정보도 확인되지 않았다. 그러나 현재까지 수집된 파일만으로도 이번 공격의 명확한 특 징이 있다. 정상 라이브러리(DLL) 파일의 Export 정보를 변조(추가, 교체, 변경)한 악성 파일 악성 파일을 실행하기 위해 유효한 인자나 데이터 파일 필요 인자나 데이터 파일을 통해 기능의 모듈화 및 기능 교체 가능 ## 라이브러리 파일 이용 공격 특징 정상 라이브러리 파일에 Export 함수를 새로 추가하거나 함수 형식을 교체, 또는 기존 함수의 코드를 변경하는 방식으로 악성 파일을 제작하였다. 정상적인 코드가 대부분이기 때문에 유심 히 보지 않으면 정상 파일로 오판할 가능성이 높다. ----- 악성 파일이 실행되기 위해서는 유효한 인자나 데이터 파일이 필요하다. 즉, 단독 파일만으로 는 파악할 수 있는 기능에 한계가 있다. 자동화된 분석 장비에서도 유의미한 실행 결과가 나오 지 않는다. 인자나 데이터 파일을 이용하여 기능을 파편화(모듈화)하였다. 어떤 정보가 입력되는지에 따 라 메모리에서 실행되는 코드나 C&C 주소 등이 달라질 수 있다. 시스템이 장악된 상태라면 공 격자가 기능을 실시간으로 계속 교체할 수 있다. ## 라이브러리 변조 및 동작 방식에 따른 악성 파일 유형 기업 침해 시스템에서 수집된 악성 라이브러리 파일은 변조 및 동작 방식에 따라 4가지 유형으 로 분류 가능하다. [표 1]은 공격자가 변조했을 것으로 추정되는 정상 라이브러리 파일명과 악 성 라이브러리 파일의 수집 당시 파일명, 그리고 PE 파일 포맷 상 ‘Export Directory’에 명시된 DLL 이름을 유형별로 나열한 것이다. 파일의 기능만 보았을 때는 유형 간 직접적인 연관성은 없다. 수집된 악성 라이브러리 파일은 정상 원본 라이브러리 파일을 변조한 형태이지만 파일명은 다 르다. 만약 파일명이 동일했다면 공격자가 라이브러리 파일을 교체하는 DLL 하이재킹 (Hijacking) 방식으로 악성코드를 실행했을 가능성이 있다. 그러나 공격의 최초 유입 경로를 포 함한 부가 정보가 확인되지 않았기 때문에 파일명이 변경된 것인지, 단순히 정상 라이브러리 파일을 변조해 위장한 것인지는 알 수 없다. 즉, 어떻게 악성 라이브러리 파일을 실행했는지는 현재 확인되지 않는다. 수집된 악성 라이브러리 파일명은 ‘Export Directory’ 구조체에 명시된 DLL 이름과도 다르다. 그러나 ‘Export Directory’ 구조체의 DLL 이름은 라이브러리가 로드될 때 영향을 주지 않는 영 역이기 때문에 큰 의미는 없다. 다만 공격자가 정상 라이브러리 파일을 변조하는 과정에서 이 를 수정했을 것으로 예상된다. 유형 정상 DLL 파일명 악성 DLL 파일명 악성 DLL 파일의 Export DLL 이름 A libGLESv2.dll – libGLESv2.dll B-1 libxml2.dll pchsvc.dll libxml2.dll B-2 알 수 없음 srsvc.dll audiosrv.dll C NppExport.dll wmicr.dll svcloader.dll D dokan1.dll – dokan1.dll D dokan1.dll uso.dat dokan1.dll D dokan1.dll zlib1.cab dokan1.dll 공격에 이용된 악성 라이브러리 파일 유형 분류 **[유형** **A] 악성** **Export 함수추가인자필요** ----- 정상 libGLESv2 라이브러리 파일에 악성 Export 함수 glInitTexture를 추가하였다. 함수가 추가 된 것이기 때문에 ‘Export Directory’ 구조체의 Export 함수 개수도 정상보다 1개 더 많다. glInitTexture 함수가 실행되면 32자 길이의 실행 인자 조건을 확인한다. 인자를 이용하여 내부 연산을 하고 이후 메모리에서 악성 PE를 실행한다. 유효 인자 정보가 확인되지 않아 실행되는 PE의 기능은 알 수 없다. 유형 A 악성 파일의 Export 함수 **[유형 B-1] 정상** 함수를 악성 ServiceMain 함수로 교체, ADS 데이터 필요 정상 libxml2 라이브러리 파일의 첫번째 Export 함수인 DllMain 함수를 악성 ServiceMain 함수 로 교체하였다. Export 함수 개수는 변화가 없다. ServiceMain 함수이기 때문에 윈도우 서비스 로 동작한다. 실행 과정에서 ADS (Alternate Data Streams) 데이터를 읽는다. ADS를 이용해 실행에 필요한 악성 데이터를 사용자 눈에 보이지 않게 숨겼다. zone과 data 스트림은 각각 암 호화된 데이터와 암호를 풀기위한 키 데이터이다. 내부 연산 이후 메모리에서 악성 PE를 실행 한다. 실행된 악성 PE는 rsrc 스트림 데이터를 필요로 한다. 최종 기능은 C&C 접속이다. ----- 유형 B-1 악성 파일의 Export 함수 ‘data’ ADS 데이터와 ‘zone’ ADS 데이터 **[유형 B-2] 악성 ServiceMain 함수** 단독 존재, ADS 데이터 필요 ----- 정상 라이브러리 파일 존재 여부가 불분명하다. Export 함수로 윈도우 서비스 ServiceMain 함 수만 존재한다. 다른 유형과는 다르게 파일 리소스 버전 정보가 없고 악성 ServiceMain 함수를 제외한 Export 함수가 없는 점을 고려하였을 때 단독으로 제작된 악성 라이브러리 파일일 수 있다. 코드 전개 차이는 있지만, B-1 유형과 기능이 유사하며 zone과 data 이름의 ADS 데이터 가 필요하다. 스트림 데이터가 수집되지 않아 이후 기능은 알 수 없다. 유형 B-2 악성 파일의 Export 함수 ADS 데이터에 접근 **[유형 C] 악성 ServiceMain 외** 함수 추가, 데이터 파일 필요 Notepad++ 플러그인 NppExport 라이브러리를 변조하였다. 정상 라이브러리에는 없는 Export 함수를 4개 추가하였는데, 윈도우 서비스로 동작하기 위한 ServiceMain과 ServiceHandler 악 성 함수 외에 AttachMove와 DetachMove 함수가 특징적이다. AttachMove와 DetachMove 함 수는 기능상으로는 정상이며, 원본 라이브러리에서 DllMain 함수에 있던 코드가 옮겨졌다. 고 정 경로에 존재하는 wmicc.dat 데이터 파일을 이용하여 내부 연산을 하고, 이후 메모리에서 악 성 PE를 실행한다. 실행된 악성 PE는 wmicd.dat 데이터 파일이 필요하고 최종 기능은 C&C 접속이다. ----- 유형 C 악성 파일의 Export 함수 **[유형 D] 기존** 함수의 코드 변경, 인자 필요, 데이터 파일 생성 및 로드 정상 Dokan 라이브러리를 변조하였다. 가장 독특한 변조 형태로서 Export 함수 추가나 교체가 아닌 함수 내 바이너리 코드만 변경하였다. 기존 유형처럼 ‘Export Directory’ 구조체 정보로는 변조 여부를 확인하기가 쉽지 않다. 또한 기존 VC++ 파일을 Vmprotect로 패킹하여 전체 코드 패턴을 바꿨기 때문에 코드 변경 여부와 기능 파악을 어렵게 하였다. Vmprotect를 언패킹하고 Export 함수별로 비교하여 변경된 코드를 확인할 수 있다. 코드가 변경된 함수는 DokanNotifyXAttrUpdate 이다. 악성 Export 함수 호출 시 ‘-s’ 로 시작하는 유효 인자가 전달되어야 동작한다. 인자가 주어지면 시스템 %Temp% 경로에 VirtualStore.cab 데이터 파일을 생성할 수 있고, 특정 조건에 맞는 인 자일 경우에는 데이터 파일을 로드한다. 데이터 파일은 C&C 통신을 위한 코드 실행과 URL 정 보이다. 침해 시스템에서 다수의 VirtualStore.cab 데이터 파일이 확인되었는데, 공격자가 C&C 서버를 실시간으로 바꾼 것으로 보인다. ----- 유형 D 악성 파일의 함수 코드 패치 VirtualStore.cab 데이터 파일 DokanNotifyXAttrUpdate 함수에서 데이터 파일 접근 ----- C&C 주소 접속 **[파일** 진단] Backdoor/Win.Akdoor Trojan/Win.Agent Data/BIN.Encrypted Data/BIN.EncryptKey Data/BIN.EncPe **[IOC]** 141c6e0f5a90b133b00a8d85aa22be67 a4a22eef112bf5d37f0fe422ebf629e5 0c1bd80923691eb5277f5969dc456c50 2ba1443fa75ced874f49586d39fa929a 798038a1546d2a0625b258885ceba88e 460507242876e7582d6744fa628cfcb6 c59552c62fb99bfd7d63f988c20125ad 08f6ab305b6fcb1ed14b48f6c8b8db76 d4e401a7ce5e5518b13e9344f70f2382 36e1c4a359e2f60007b3f87194503750 dd0eddacd65fe208baf06548635584a7 47a07dc9a87ec29f2aee20287330fa34 78c6f1cb87039ad99f39b8a880a016b2 fcb1cbc5abfa4f5644b32368f2593de3 4e3724128e3a8775d8b8ec98ea94dbc2 9731ae209364fe224d873b49e284a19f e600fe93690175b85415f021165ca111 1509727ff1d47cf701068000d8b137ab 2fec123d69d8958c5f1e1c512da30888 dfa0adb2d2d8208f0dc7dabe97541497 hxxps://www.dbclock.com/bbs/media/preview.php hxxp://www.krtnet.co.kr/images/support/faq.php hxxp://www.donganmiso.com/hm_board/works/libs/info.php hxxps://www akdjbcc co kr/api/score list asp ----- hxxp://charmtour.co.uk/common/shopsearch.asp hxxps://www.okcc.co.kr/html/board/reserve03_add.asp hxxp://www.kwangneungcc.co.kr/admin/board/Event/list_add.asp hxxps://www.shopingbagsdirect.com/.well-known/validation.asp hxxps://www.kkw119.com/.well-known/pki-validation/auth.asp hxxps://www.shoppingbagsdirect.com/.well-known/validation.asp hxxps://www.myungokhun.co.kr/_proc/member/sitemap.asp hxxp://youthc.or.kr/community/template.asp hxxp://paadu.or.kr/sitemap.asp hxxps://www.shoppingbagsdirect.com/.well-known/validation.asp hxxp://www.youthc.or.kr/community/template.asp hxxp://pasc.co.kr/family/data/smartlist.asp hxxp://www.paadu.or.kr/sitemap.asp 전체 코드와 보다 자세한 기능 설명은 ‘차세대 위협 인텔리전스 플랫폼’ ATIP 에서 제공하고 있습니다. [Categories:악성코드](https://asec.ahnlab.com/ko/category/malware/) 정보 [Tagged as:APT,](https://asec.ahnlab.com/ko/tag/apt/) [DLL,](https://asec.ahnlab.com/ko/tag/dll/) [기업공격](https://asec.ahnlab.com/tag/%ea%b8%b0%ec%97%85%ea%b3%b5%ea%b2%a9/) -----