보다빠르고정확하게정보를전해드립니다. [Threat Analys is ] 3 20 APT 공격관련부팅장애타입별상세분석 작성일 2013-04-09 HDD 파괴등피해결과는유사, 이용된악성코드는각기달라 2013 년 3 월 20 일오후 2 시경, 주요방송사들의사내 PC 들이동시에다운되더니재부팅이되지않는사태 가벌어졌다. 같은시각, 일부금융기관에서도직원들의 PC 에서파일이삭제되는현상이나타나는등전산장애가발 생했다. 분석결과, 악성코드에의해부팅관련영역인 MBR(Master Boot Record) 이파괴된것이었다. 그러나 하드디스크파괴및부팅장애를유발한악성코드의종류와구조, 동작방식은피해기업별로각기달랐 다. 타깃에따라치밀한준비를한공격임을짐작케하는대목이다. 주요방송사및금융기관을대상으로발생한 3 20 APT 공격은하드디스크파괴및시스템부팅장애에따른전산망마비라는초유의사태를야기했다. 안랩은사건발생즉시, 자사시큐리티대응센터 (AhnLab Security Emergency response Center, 이하 ASEC) 를중심으로즉각적인대응체제에돌입, 전산망마비의원인인악성코드의실체파악에나섰다. ASEC 분석결과, 3 20 APT 공격과관련된부팅장애는악성코드의종류및구조등을기준으로크게 4 가지 타입으로구분이가능하다. 다음은부팅장애타입별악성코드를상세하게분석한내용이다.
3 20 AP T 공격의부팅장애타입별악성코드구조도 [ 그림 1] 타입별악성코드구조도 A 타입 : AgentBas e.exe
A 타입에서부팅장애와관련해이용된악성코드는 AgentBase.exe 파일로, 다음과같은동작을수행한다. 1. 파일매핑오브젝트로동기화하여하나의프로세스만실행되도록한다. JO840112-CRAS8468-11150923-PCI8273V 라는이름의파일매핑오브젝트 (FileM apping Object) 의존재여 부를확인하여단한개의프로세스만실행되도록한다. [ 그림 2] 파일매핑오브젝트를이용한동기화 2. 특정파일존재여부에따라하드디스크파괴여부를결정한다. 분석과정에서 %SystemDirectory%\TEM P\~v3.log 라는이름의파일존재여부를확인하는코드가확인 되었으나해당파일은수집되지않았다. 이파일은실제제품에서사용하는파일과는무관하다. 3. 보안소프트웨어 Anti-Virus 의프로그램프로세스를강제종료한다. WinExeC API 로아래와같은 Taskkill 명령을호출하여보안소프트웨어프로그램의프로세스를종료시킨다. Taskkill /F /IM pasvc.exe Taskkill /F /IM clisvc.exe 4. 윈도우버전에따라각각아래와같은하드디스크파괴스레드 (Thread) 를구동한다. 메이저버전 5 인경우 (Windows XP, Windows 2003 Server 등 ) - 물리디스크의 MBR(Master Boot Record) 과 VBR(Volume Boot Record) 등을쓰레기데이터로덮어쓴다.
- 최대 10 개까지물리디스크 (\\PHYSICALDRIVE0 ~ \\PHYSICALDRIVE9) 를열어각물리디스크의 M BR 과 VBR 을 PRINCPES 이라는문자열을반복하여덮어쓴다. 확장파티션을사용하고있는시스템의경우, 각파티션의 VBR 까지파괴한다 ([ 그림 3], [ 그림 4], [ 그림 5], [ 그림 6]). - 쓰레기데이터를덮어써서논리드라이브를파괴한다. B:\ 부터 Z:\ 까지모든논리드라이브중에서드라이브타입이 DRIVE_REMOVABLE 또는 DRIVE_FIXED 인드라이브의데이터에 PRINCIPES 라는문자열을반복하여덮어씀으로써논리드라이브를파괴한다. 이 쓰레기데이터는약 5.3MB 간격으로 100KB 씩덮어쓰며, 각논리드라이브마다스레드를생성하여파괴한다. [ 그림 3] 물리디스크관련명령 [ 그림 4] 디스크를덮어쓰기위한문자열 PRINCPES 조합 [ 그림 5] PRINCPES 문자열로덮어쓴 MBR 영역
[ 그림 6] PRINCPES 문자열로덮어쓴 VBR 영역 메이저버전 6 인경우 (Windows 7, Windows VISTA 등 ) - 물리디스크파괴 위의메이저버전 5 의경우와동일한증상이발생한다. - 모든논리드라이브의파일내용을삭제 모든논리드라이브의파일내용을 'PRINCPES 문자열로반복하여덮어써서원본파일내용을제거한다음, 모든파일을 DeleteFile API로삭제하고모든디렉토리를 RemoveDirectoryA API로삭제한다. D:\ 부터차례대로드라이브의파일시스템을제거한뒤, 마지막으로 C:\ 에서파일시스템을제거한다. 그러나 C:\ 의 % SystemDirectory%, %ProgramData%, %ProgramFiles% 등세경로의파일은제거하지않는다. 5. 논리드라이브파괴후시스템을재부팅한다. 논리드라이브파괴를시작한뒤 5 분이지나면 Shutdown?r?t 0 커맨드라인 (Command Line) 을실행하 여시스템을재부팅한다. 그러나앞서하드디스크가파괴된상태이므로시스템은재부팅되지않는다. [ 그림 7] 즉시시스템을재부팅하기위해 Shutdown?r?t 0 실행 B 타입 : ApcRunC md.exe, AgentBas e.exe, ~pr1.tmp
B 타입에서부팅장애를유발한악성코드는드롭퍼인 ApcRunCmd.exe 파일과윈도우시스템의하드디스크 를파괴하는 AgentBase.exe 파일, Unix 계열의 OS 에서파일시스템을파괴하는 ~pr1.tmp 파일등으로구성 되어있다. 앞서설명한 AgentBase.exe 파일을제외한 B 타입의주요파일을살펴본다. ApcRunC md.exe 1. 드롭퍼인 ApcRunCmd.exe 파일은 %Temp% 폴더에다음의파일을생성한다. AgentBase.exe: MBR 을파괴하는파일 alg.exe: UPX 로패킹된형태로, SSH 명령을사용하기위한 PuTTY plink 프로그램 conime.exe: UPX 로패킹된형태로, SCP 연결을위한 PuTTY pscp 프로그램 ~pr1.tmp: UNIX 계열시스템의디스크를파괴하는스크립트 2. AgentBase.exe 를실행한다. %Temp% 폴더에 ~TEM P\~v3.log 파일이존재하지않으면, %Temp% 폴더에생성한 AgentBase.exe 파 일을실행하여 MBR 및디스크를파괴한다. [ 그림 8] ~TEMP\~v3.log 파일존재여부확인 3. 원격관리툴의환경설정파일정보를획득하여원격접속을실행한다.
(1) 원격접속관리툴 mremote 존재여부확인 1 운영체제버전에따라각각다음경로에서환경설정파일의존재여부를확인한다. 메이저버전 5 인경우 (Windows XP, Windows 2003 Server 등 ) C:\Documents and settings\administrator\local Settings\Application Data\Felix_Deimel\mRemote \confcons.xml 메이저버전 6 인경우 (Windows 7, Windows VISTA 등 ) C:\Users\AppData\Local\Felix_Deimel\mRemote\confCons.xml 2 환경설정파일이존재할경우다음과같은문자열에해당하는내용을추출한다. 3 스레드를생성한후, 획득한문자열을조합한다음의명령을실행한다.?batch 옵션에서 SCP(Secure Copy) 의 Putty 버전인 pscp 를이용해대화형프롬프트가나타나지않도록 한다. 이상태에서루트계정으로아래와같이 ~pr1.tmp 를호스트의 /tmp/cups 에복사한다. ~pr1.tmp 는유 닉스 / 리눅스시스템의디스크파괴와관련된파일로, 상세한내용은별도로설명한다.
[ 그림 9] 스레드생성후명령실행 Putty 의커맨드 (Command) 버전인 plink 를?batch 옵션을통해대화형프롬프트가나타나지않도록한후 루트계정으로호스트의 /tmp/cups 에실행권한을주고, /tmp/cups 를실행한다. 공격자는커맨드에서 SSH 와 SCP 를이용하기위해드롭퍼에 plink 와 pscp 를포함시킨것으로보인다. (2) 원격접속관리툴 SecureCRT 존재여부확인 1 운영체제버전에따라각각다음경로에서환경설정파일의존재여부를확인한다. 메이저버전 5 인경우 (Windows XP, Windows 2003 Server 등 ) C:\Documents and settings\administrator\application Data\VanDyke\Config\Sessions\*.ini 메이저버전 6 인경우 (Windows 7, Windows VISTA 등 ) C:\Users\AppData\Roaming\VanDyke\Config\Sessions\*.ini 2 환경설정파일이존재할경우다음과같은문자열에해당하는내용을추출한다.
3 스레드를생성한후, 획득한문자열을조합한다음의명령을실행한다. ~pr1.tmp ~pr1.tmp 파일은 Unix 계열 OS 의파일시스템을파괴하기위한 BASH Shell 파일로, AIX Unix, HP Unix, Sol aris, Linux 등의시스템대상으로다음과같은공격을수행한다. AIX Unix: DD 명령어를이용해디스크의 10MB 마다 NULL 로덮어쓴다. HP Unix: DD 명령어를이용해디스크의 8MB 마다 NULL 로덮어쓴다. Solaris: rm 명령어를이용해 /kernel, /usr/adm, /etc, /home, /(Root) 폴더를차례로삭제한후, DD 명 령어를이용해디스크의 80MB 마다 NULL 로덮어쓴다. Linux: rm 명령어를이용해 /kernel, /usr, /etc, /home 폴더를차례로삭제한다. C 타입 : kv _d[1].tmp, OthDow n.exe, vms init.ini, mb_join[1].gif C 타입의부팅장애유발악성코드는드롭퍼인 kv _d[1].tmp 파일과하드디스크파괴를수행하는 OthDown. exe 파일, 하드디스크파괴변종인 mb_join[1].gif 파일, 환경설정을위한 vmsinit.ini 파일등으로구성되어 있다.
kv _d[1].tmp 1. 보안소프트웨어를강제종료한다. 아래의명령을실행하여사용자몰래보안소프트웨어프로그램의프로세스를종료시킨다. 2. 보안소프트웨어관련파일을삭제한다. C 타입의피해기업이이용중인보안소프트웨어와관련된아래의파일들을삭제한다. 3. 아래와같이레지스트리를설정한다. 4. 파일을생성한다. 드롭퍼내부에압축파일형태로존재하는 OthDown.exe 와 vmsinit.ini 를아래의경로에생성한다. OthDown.exe: MBR 을파괴하는파일
%ProgramFiles%\Hxxxx\SiteServer\vismsupdate\vms1014.zip vmsinit.ini: 환경설정파일 %ProgramFiles%\Hxxxx\SiteServer\vismsupdate\update.zip OthDow n.exe OthDow n.exe 는시스템의하드디스크를파괴하는파일로, A 타입의 AgentBase.exe 와동일한기능을수행 하는반면, [ 표 1] 과같은차이를보인다. [ 표 1] A 타입와 C 타입의하드디스크파괴파일비교 vms init.ini vmsinit.ini 는환경설정파일로, 아래와같이 vms1014.zip 파일을다운받아 OthDow n.exe 를생성한다.
mb_join[1].gif mb_join[1].gif 는하드디스크파괴샘플의또다른변종파일로, 앞서설명한 AgentBase.exe 와달리 [ 그림 1 0] 과같이 PRINCPES 문자열에 I 대신! 문자를사용하고있다. [ 표 2] 하드디스크파괴변종파일의차이점 [ 그림 10] 문자열변형 PR!NCPES D 타입 : Update.exe, s chs vcs c.dll, s chs vcs c.exe
D 타입에서사용된악성코드는드롭퍼인 Update.exe, 하드디스크파괴와관련된 schsvcsc.dll, 그외 schs vcsc.exe 등으로구성되어있다. [ 그림 11] 은 D 타입의특징적인파일흐름을설명한것이다. Update.exe 가 System32 폴더에 schsvcsc.exe 와 schsvcsc.dll 등두개의파일을생성하고 schsvcsc.exe를실행하면, schsvcsc.exe는 Lsass.exe 프로세스에 schsvcsc.dll을삽입 (injection) 한다. 삽입된 schsvcsc.dll은힙 (Heap) 을할당받은후, 자체에인코딩되어있는코드를디코딩하여힙에생성해스레드로구동한다. 이때구동되는스레드가하드디스크를파괴한다. [ 그림 11] D 타입의파일상세흐름도 Update.exe 1. schsvcsc.exe 가자동실행되도록한다. HKLM\SOFTWARE\M icrosoft\window s NT\CurrentVersion\Winlogon 경로의레지스트리에셸 (Shell) 값을 explorer.exe, schsvcsc.exe 로등록함으로써 schsvcsc.exe 를자동실행한다. [ 그림 12] 레지스트리셸 (Shell) 값 2. schsvcsc.exe 와 schsvcsc.dll 을생성한다. Windows System32 폴더에 schsvcsc.exe 와 schsvcsc.dll 이라는이름의파일을생성한다. 이때, 이들두 파일의파일생성시간정보를 Kernel32.dll 의시간정보와동일하게설정한다.
3. 생성한 schsvcsc.exe 를실행한다. 앞서생성한 schsvcsc.exe 파일을실행한다. 4. 드롭퍼인 Update.exe 는악성코드가동작할수있는환경을마련한후스스로를삭제한다. %Cmd.exe% del /q update.exe 명령으로 ShellExecuteA 함수를호출해자기자신을삭제하며, 이때 Cmd.exe 의경로는 ComSpec 환경변수를통해확보한다. s chs vcs c.exe 1. SeDebugPrivilege 권한을조정한다. schsvcsc.exe 는 DLL 인젝션을하기위해 SeDebugPrivilege 권한을조정한다. 2. Lsass.exe 에 schsvcsc.dll 모듈을인젝션한다. Lsass.exe 프로세스를찾아 schsvcsc.dll 모듈을인젝션한다. 인젝션방법은메모리를할당하여 schsvcsc.dll 이라는문자열을쓰고, 이문자열을인자로하여 LoadLibraryW API 를시작주소로설정해 CreateRemote Thread 를호출하는방식을이용했다. ㅏ s chs vcs c.dll 1. 자체에인코딩되어있는하드디스크파괴코드를디코딩한다. 인코딩 (XOR 0x55) 되어있는하드디스크파괴코드를디코딩하여코드사이즈만큼할당받은메모리에코드 를쓴다. 이코드는 RVA 0xAC50 부터 0x1171 까지위치한다. 2. 특정날짜와시간이지나면실행된다. GetLocalTime API 를이용하여현재시간을확인한후, 특정날짜와시각이지나면무조건실행된다. 3. 하드디스크파괴모듈이스레드로동작한다. 3 월 20 일 15 시 1 분이되면디코딩된하드디스크파괴모듈이스레드로동작한다. 하드디스크파괴기능이라 는점에서 schsvcsc.dll 은앞서설명한 mb_join[1].gif 파일과유사하지만, [ 표 3] 과같은차이를보인다.
[ 표 3] C 타입와 D 타입의하드디스크파괴파일비교 3 20 APT 공격으로 MBR 파괴, 부팅장애등의피해결과가나타난가운데, 피해기업별로악성코드의구조 및종류, 동작방식등에차이가확인됐다. 각기업내부의인프라에맞춰각기다른시스템과악성파일을이 용했다는것으로해석할수있다. 이점이금번 3 20 APT 공격의가장큰특징이다 한편안랩은침해사고가발생한 3월 20일저녁 6시 40분부터해당악성코드의진단및치료가가능한전용백신을제공하고, V3 제품군에최신업데이트엔진을적용했다. 그러나 3월 24일불특정다수, 즉일반인까지대상으로한변종이발견되었으며, 추가공격이우려되는만큼백신을최신업데이트상태로유지하는등정보자산보호를위해주의가요구된다.@ [Special Report] APT 대응, 전문가에게맡겨라! [Product Issue] AOS, 인터넷뱅킹인증부터해킹방지까지