| 악성코드 ‘제로액세스’ 분석했더니... | 2012.10.07 |
스미서의 변형...EA 이용해 윈도우에서 치료 더욱 힘들어
[보안뉴스 권 준] 본지는 악성코드 ‘제로액세스(ZeroAccess)’가 전 세계 900만대 PC를 감염시키는 등 큰 피해를 유발시키고 있다고 지난 9월 말 보도한 바 있다. 이러한 제로액세스에 대한 세부 분석정보가 ASEC(http://ahnlabasec.tistory.com)에 의해 발표돼 주목을 끌고 있다. ASEC에 따르면 스미서(Smiscer) 변형으로 알려진 악성코드 제로액세스의 감염기법을 이해하기 위해서는 EA(Extended Attributes)에 대한 이해가 선행되어야 한다. EA(Extended Attributes)는 원래 HPFS(High Performance File System)에 있는 기능을 NTFS에서 구현해 놓은 것을 말하며, 쉽게 설명하면 파일의 추가적인 속성을 ‘Name=Value’처럼 환경 변수 형태로 파일에 붙이는 것을 의미한다. 윈도우 시스템에서는 ZwSetEaFile과 ZwQueryEaFile 두 개의 API로 해당 값들을 Set 혹은 Query 할 수 있게 제공하고 있으며, FILE_FULL_EA_INFORMATION이라는 구조체의 링크드 리스트(Linked List)로서 EA를 구현해 놓았다. 물론 EaValueLength가 2Byte 변수이므로 최대 64K 바이트(Byte)까지 값을 쓸 수 있다.
제로액세스에 감염이 되면 제로액세스는 자신의 작업을 위하여 아래 이미지와 같은 윈도우 시스템의 보안 프로세스의 스레드(Thread)들을 중지시켜 놓는다.
윈도우 시스템에 존재하는 정상 시스템 파일 중 하나인 Explorer.exe에 0x430 Byte의 코드를 삽입하고 이를 실행시킨다. 여기서 스레드(Thread)를 새로 생성하지 않고 Explorer.exe의 스레드(Thread) 중에서 WaitReason이 DelayExecution인 스레드(Thread)를 찾아 이 스레드(Thread)가 삽입된 코드를 수행하게끔 Context에서 EIP를 변조하게 된다. 그리고 삽입된 코드는 Explorer.exe 프로세스에 로드된 ActionCenter와 Wscntfy 모듈을 언로드시키는 기능을 수행하게 된다. 3. 페이로드(Payload)에 의한 DLL 파일 생성 윈도우 시스템의 아래 경로에 접근하게 된다. \??\C:\Documents and Settings\<User Name>\Local Settings\Applicatuin Data\{043A.....}\ 해당 경로에는 다음과 같은 파일과 디렉토리를 생성하게 되는데, 그 중 "@"은 데이터 파일로 시간정보를 포함한 특정정보를 포함하고 있다. 그리고 “n”은 PE 파일로 제작자의 명령에 따라 동작하는 악의적인 봇(Bot) 기능을 수행하게 된다. U : 디렉토리(Directory) L : 디렉토리(Directory) @ : 데이터(Data) 파일 n : PE 파일 4. 윈도우(Windows) 보안 무력화를 위한 스레드(Thread) 생성 제로액세스는 스레드(Thread)를 하나 생성하게 되는데, 윈도우에 포함되어 있는 보안 기능들을 무력화시키는데 사용된다. 1) 특정 서비스들 제거 MsMpSvc, windefend, SharedAccess, iphlpSvc, wscsvc, mpssvc, bfe 2) 특정 프로세스 강제 종료 wscntfy.exe, MSASUci.exe, MpCmdRun.exe, NisSrv.exe, msseces.exe 5. CMD 프로세스를 생성하여 코드를 삽입 제로액세스는 CMD 프로세스를 생성하여, 해당 프로세스의 스택(Stack)에 데이터를 삽입하게 된다. 아래와 같은 특정 API들의 파라미터를 차례로 스택(Stack)에 넣어 코드 없이 API 만으로 스미서 자신의 프로세스가 종료된 이후에는 Cmd가 자신 파일을 삭제할 수 있게끔 조작하게 된다. ZwClose -> ZwDelayExecution -> ZwSetInformation -> ZwClose 6. 외부 네트워크에 존재하는 시스템으로 접속 시도 제로액세스는 감염 시스템에서 외부 네트워크에 존재하는 promos.fling.com 도메인을 가진 시스템에 역접속을 시도하여 성공하게 되면, 감염 시스템에서 운영체제 정보 및 제로액세스의 동작 진행상황들을 전송하게 된다.. 7. 자신의 복제본 및 허위 InstallFlashPlayer 생성 제로액세스는 자신의 복제본을 DLL 파일의 속성만 부여한 다음 msimg32.dll 파일명으로 생성한 이후에 Explorer.exe 프로세스에 의해 로드하게 된다. 그리고 허위 InstallFlashPlayer를 생성하게 된다. 8. ExitProcess의 후킹(Hooknig) 제로액세스는 자신이 필요로 하는 감염된 시스템의 정보들을 수집하여 제작자에게 전송하기 전에 프로세스가 강제로 종료되는 것을 막기 위해 ExitProcess를 후킹하게 된다. 9. Services.exe를 감염 제로액세스에 의해 EA(Extended Attributes)가 이용되는 부분은 Services.exe를 감염시킬 때로 Services.exe의 중간에 0x300바이트(Byte)를 자신의 코드로 덮어 쓰게 된다. 여기서 덮어 쓰여진 코드는 자신 파일(Services.exe)에서 제로액세스 드로퍼(Dropper)가 생성해 놓은 EA(Extended Attributes) 데이터를 읽는 역할을 수행하게 된다. 이 EA(Extended Attributes) 데이터에는 페이로드(Payload)를 수행하는 코드와 패치(Patch)한 0x300바이트(Byte)의 원본 코드를 포함하고 있다. 그래서 제로액세스의 정확한 치료를 위해서는 EA(Extended Attributes)를 읽어 이 0x300 바이트(Byte)를 찾아 원래 위치로 복구해 주어야 하며 이 부분의 동작을 간략하게 도식화 하게 되면 아래 이미지와 동일하다.
그리고 EA(Extended Attributes)를 이용함으로서 윈도우 시스템에서 치료를 더욱 어렵도록 하고 있다. 이와 관련 ASEC 측은 “제로액세스(스미서 변형)에 대한 정확한 진단 및 치료를 위해 별도의 ‘Win-Trojan/Smiscer 전용 백신’을 제작하여 배포 중에 있다”며, “전용백신 실행 전 작업 중인 데이터는 반드시 저장하고, 전용백신 이외에 다른 응용 프로그램은 반드시 종료할 것”을 당부했다. [권 준 기자(editor@boannews.com)] <저작권자: 보안뉴스(http://www.boannews.com/) 무단전재-재배포금지> |
|
|
|