Petya와 유사한 Diskcoder (혹은 Bad Rabbit) 랜섬웨어가 1025일 최초 동유럽에서 보고 되었다.

유포 방식은 DBD (Drive By Download) 로 추정 되며 가장 상위의 드롭퍼는 Adobe Flash Player 설치파일로 위장 되었다.

[그림 1] - 구조 흐름도


드로퍼는 주요 악성기능을 수행하는 DLL 파일을 드롭 한 후 Rundll32.exe 이용하여 실행한다. 아래 표와 같이 인자 값이 주어지는데 해당 인자 ‘15’는 추후 악성코드가 재부팅 명령을 수행할 때 시간 조건으로 사용한다. 자세한 내용은 아래에 언급된다


생성 경로 및 파일명

C:\windows\infpub.dat

실행 명령

C:\windows\system32\rundll32.exe C:\windows\infpub.dat”,#1 15


위와 같이 실행 된 DLL은 아래와 같은 기능을 한다.

- MBR 변조 및 부트 파티션 암호화 관련 파일 드롭

- 파일 암호화

- 네트워크 전파


MBR 변조 및 부트 파티션 암호화을 수행하는 파일은 위 infpub.dat에서 드롭되며 그 내용은 아래와 같다.


[MBR 변조]

생성 경로 및 파일명

C:\Windows\dispci.exe

rhaegal 스케줄 명령

schtasks /Create /RU SYSTEM /SC ONSTART /TN rhaegal /TR "C:\Windows\system32\cmd.exe /C Start

"" "C:\windows\dispci.exe" -id [랜덤숫자] && exit"


MBR
변조를 수행하는 dispci.exe파일은 schtasks를 통해 위와 같은 명령의 스케줄로 등록되어 동작한다. rhaegal이라는 이름의 스케줄로서 시스템 계정으로 ‘-id [랜덤숫자]’ 인자를 주어 dispci.exe를 실행하라는 의미를 가진다.

아래 그림과 같이 해당 파일 내부 Resource섹션에 MBR변조에 사용하는 데이터를 가지고 있으며, 해당 내용을 읽어 덮어씀으로써 MBR 변조가 수행된다.

[그림 2] - dispci.exe Resource영역에 존재하는 MBR변조 데이터


변조 후에 원본 MBR은 부트 파티션 하위 위치에 백업되며 사용자 정보 및 AES 키 값은 공개키로 암호화된다.


[부트 파티션 암호화]

생성 경로 및 파일명

C:\Windows\cscc.dat

레지스트리 등록

HKLM\SYSTEM\CurrentControlSet\Services\cscc\\ImagePath

"cscc.dat" -> 대상 파일

 

HKLM\SYSTEM\CurrentControlSet\Services\cscc\DisplayName

"Windows Client Side Caching DDriver" -> 서비스 이름

 

HKLM\SYSTEM\CurrentControlSet\Services\cscc\Type

0x1 -> 커널 초기화시 해당 드라이버가 로드


해당 파일은 오픈 소스로 제공되는 파티션 암호화 솔루션 드라이버 파일이다. 해당 파일은 재부팅 후 로드되어 동작한다. 또한 상위에 언급된 dispci.exe에서 DeviceIoControl API를 이용하여 ControlCode를 해당 드라이버에 보내어 제어 및 수행하게 함으로써 부트 파티션 암호화가 일어난다.

[그림 3] – dispci.execscc.dat(dcrypt)를 이용하는 부분

 

가장 상위에서 언급 된 infpub.dat은 자신이 받은 인자 값 ‘15’와 파일이 실행된 시간을 바탕으로하여 계산 된 값을 합한 숫자(분 단위)만큼 후에 재부팅 될 수 있도록 명령을 수행한다. 이때 한번 재부팅하면 해당 드라이버 파일이 로드 되며 실행된다.


drogon 스케줄 명령

schtasks /Create /SC once /TN drogon /RU SYSTEM /TR "C:\Windows\system32\shutdown.exe /r /t 0 /f" /ST [재부팅시간]


위 스케줄은 시스템 재부팅을 한번 수행하는 명령이며, 아래 그림4는 MBR 및 부트 파티션이 모두 변조 및 암호화되고 재부팅 된 후에 보이는 화면이다.


[그림 4] – 부팅 변조 화면

 

[파일 암호화]

랜섬웨어의 가장 큰 특징으로 파일들에 대한 암호화를 수행하는데 확장자 비교 매칭으로 대상 파일들을 암호화 한다. CryptGenRandom API와 특정 루틴을 통해 AES 키를 생성하며 공개키는 코드에 하드코딩되어 있다.

[그림 5] – 하드코딩 된 공개키


감염

대상

확장자

.3ds.7z.accdb.ai.asm.asp.aspx.avhd.back.bak.bmp.brw.c.cab.cc.cer.cfg.conf.cpp.crt.cs.ctl

.cxx.dbf.der .dib.disk.djvu.doc.docx.dwg.eml.fdb.gz.h.hdd.hpp.hxx.iso.java.jfif.jpe.jpeg.jpg

.js.kdbx.key.mail.mdb.msg .nrg.odc.odf.odg.odi.odm.odp.ods.odt.ora.ost.ova.ovf.p12.p7b

.p7c.pdf.pem.pfx.php.pmf.png.ppt.pptx.ps1 .pst.pvi.py.pyc.pyw.qcow.qcow2.rar.rb.rtf.scm

.sln.sql.tar.tib.tif.tv.vb.vbox.vbs.vcb.vdi.vfd.vhd.vhdx .vmc.vmdk.vmsd.vmtm.vmx.vsdx.vsv

.work.xls.xlsx.xml.xvd.zip

 [표 1] – 암호화 대상 확장자

파일이 모두 암호화 된 후에 [그림 6]과 같이 Readme.txt라는 랜섬노트를 확인 할 수 있으며, 지불 페이지는 [그림 7]과 같다.

[그림 6] – Readme.txt 랜섬노트

[그림 7] – 지불 페이지

[계정정보 획득(Mimikatz)]

위의 방식 외에도 Diskcoder 랜섬웨어는 [랜덤숫자].tmp파일을 생성하여 원격지 접속을 위한 계정정보 획득을 시도한다.

생성 경로 및 파일명

C:\Windows\[랜덤숫자].tmp


[ADMIN$ SMB를 이용한 전파]

Diskcoder 랜섬웨어는 자신을 추가 전파하기 위해 ADMIN$ 공유폴더 및 SMB취약점을 이용한다.

SMB 취약점을 이용하기 위해 139 445 포트를 검색하며 IPC$ 연결을 위해 대입 할 특정 사용자 계정이름과 암호 리스트를 가지고있다. 연결이 수립되면 ADMIN$를 통해 파일복사를 진행한다.

아래는 악성코드가 대입하는 사용자 계정이름과 암호의 일부이다.


사용자 계정 이름

암호

administrator

netguest

superuser

nasadmin

nasuser

ftpadmin

ftpuser

backup

operator

other user

support

manager

rdpadmin

rdpuser

user-1

User1

Guest

Admin

Administrator

123321

zxc321

zxc123

qwerty123

qwerty

qwert

qwe321

qwe123

77777

55555

111111

password

test123

admin123Test123

Admin123

user123

User123

guest123

Guest123

 [표 2] – 취약한 계정 정보 리스트(일부) 


V3 제품군에서는 DiskCoder (혹은 Bad Rabbit) 랜섬웨어를 다음과 같은 진단명으로 탐지하고 있다.

 

<V3 제품군 진단명>

- Trojan/Win32.Diskcoder (2017.10.25.04)

- Trojan/Win64.WinCred (2017.10.25.04)

- Trojan/Win32.WinCred (2017.10.25.04)

신고
Posted by chloechoi

안티바이러스 제품의 진단을 우회하기 위해 이메일에 첨부한 악성코드의 포맷을 실행파일에서 압축(zip)포맷으로 악성코드를 유포하던 제작자들이 파일 포맷을 ZIP에서 ISO 포맷으로 변경한 것을 확인하였다.

[그림-1] ISO 파일 포맷으로 악성코드를 유포하는 이메일

ISO파일은 국제 표준화 기구에서 제정한 CD-ROM 매체를 위한 파일 시스템으로 디렉터리로 파일을 관리 한다. 해당 구조는 표준화가 되어있어 운영 체제가 이에 대응하고 있으면 CD-ROM으로 인식하여 읽어낼 수 있다.

ZIP 포맷에서 ISO 포맷으로 변경된 배경은 Windows8 이전 버전에서는 별도의 프로그램이 설치되어있어야 CD-ROM으로 인식 후 실행 가능하였지만, Windows8 마일스톤 버전에서 추가된 기능에 의해 자동으로 ISO 이미지가 CD-ROM으로 마운트 되어 아래 그림과 같이 동작한다.

[그림-2] Windows8 이상 버전에서 자동으로 마운트 되어 실행되는 ISO 파일

별도의 설정 없이 사용자가 내부 파일을 실행할 수 있으며, 상기 그림과 같이 문서파일 아이콘으로 위장하고 있는 실행파일은 사용자가 주의하지 않는다면 오인하고 실행할 가능성이 크다.

ISO파일 Offset 0x8000에는 다음과 같이 ISO파일을 확인할 수 있는 문자열과 디렉터리 구조에 따라 내부 파일에 대한 정보를 갖고 있다.

[그림-3] ISO 내부 포함된 파일의 파일명

ISO파일은 표준화된 구조로 범용성을 위해 데이터를 압축하지 않고 기록하기 때문에 내부에 아래그림과 같이 실행파일을 포함하고 있다.

[그림-4] ISO파일 내부 압축 되지 않은 실행파일 데이터

V3 제품에서는 위와 같은 ISO 포맷으로 유포되는 실행파일을 다음과 같은 간단한 옵션 설정으로 검사가 가능하다

해당 옵션을 설정하는 방법은 제품별로 다음과 같다

 

V3 ES 9.0 설정 방법(제품별 설정 방법 동일)

환경설정  - PC 검사설정 정밀검사 탭 검사 대상 설정 클릭

[그림-5] V3 ES 9.0 설정 화면

 

예방

악성코드로부터의 완벽한 예방법은 없지만, 다음과 같은 예방법으로 감염 가능성을 최소화할 수는 있다.

1. 안티바이러스 제품의 엔진 패턴 버전을 최신으로 유지하고 주기적으로 시스템 검사를 실시한다.

2. Windows 운영체제를 포함하여 Adobe Flash, JAVA 등 주요 프로그램을 최신 버전으로 유지한다.

3. 신뢰되지 않는 사이트 및 이메일의 열람을 주의한다.

 

신고
Posted by JYP

지난 2017 8 20일 안랩은 클라우드 기반의 악성코드 위협 분석 및 대응 시스템인 ASD(AhnLab Smart Defense)를 통해 이모텟(Emotet) 악성코드가 스팸 봇넷을 통해 유포되고 있음을 확인하였다.

 

이모텟 악성코드는 미국, 영국, 캐나다와 같이 해외에서 주로 발견되는 금융 정보 탈취형 악성코드이다. 이모텟은 악성 매크로가 포함된 워드문서가 첨부된 스팸 메일(MalSPAM)을 통해 유포되며, 유포되는 이모텟 악성코드의 주요 기능은 컴퓨터 호스트 이름 정보, 실행 중인 프로세스 리스트 등 사용자 정보를 유출하는 기능과 C&C 서버로부터 추가 악성 모듈을 다운로드하여 실행시키는 악성코드 로더의 역할을 수행한다.

 

분석 당시 C&C 서버가 차단되어 있어 추가 악성 모듈을 확보하기 어려운 상황이지만, C&C 서버로부터 다운로드 받는 모듈이라고 알려진 파일이 ASD 인프라에 확보되어 본 글에서는 해당 모듈에 대한 분석 내용을 공유하고자 한다. 참고로 C&C 서버로부터 다운로드 받는다고 알려진 추가 모듈에 대한 목록은 [-1]과 같다.

 

공유 폴더를 통한 악성코드 전파 모듈

스팸 메일 전송에 사용되는 모듈

브라우저에 인젝션되어 금융 정보 탈취에 사용되는 모듈

[-1] C&C 서버로부터 다운받는 추가 모듈 목록

 

확보된 모듈의 주요 행위는 네트워크 공유 폴더를 통해 이모텟 악성코드를 전파하는 기능을 수행한다.

 

네트워크 공유 폴더 목록 획득

공유 폴더 접속을 위한 brute force(이하 브루트-포스) 공격 시도

접속 성공 시 공유 폴더 경로에 이모텟 악성코드 자가 복제

이모텟 악성코드를 공격 대상 공유 폴더에 복사 및 원격 실행

[-2] 공유 폴더를 통한 악성코드 전파 모듈

 


 

네트워크 공유 폴더 목록 획득

 

WNetOpenEnumW, WNetEnumResource API 호출을 통해서 시스템 내 공유된 폴더 목록과 NetUserEnum API를 통해서 사용자 계정 리스트를 가져온다.

 


[그림-1] 네트워크 공유 폴더 목록 획득 코드 일부분 (1)

 

[그림-2] 네트워크 공유 폴더 목록 획득 코드 일부분 (2)

 

공유 폴더 접속을 위한 브루트-포스 공격 시도

 

NetUserEnum API를 호출하여 계정을 확보한 이후 해당 모듈은 네트워크 공유 폴더 접속을 위한 브루트-포스 공격을 시도한다.

 

먼저 WNetAddConnection2W API를 통해 네트워크 공유 폴더에 접근한다. 이때 접속을 시도하는데 이용되는 패스워드의 경우에는 난독화된 상태로 하드 코딩 되어 있는 1000개의 암호 목록 [-3]이 사용되며, 접속 계정은 네트워크 자원을 통해 얻은 ID 혹은 해당 계정으로 접근 실패 시 Administrator가 사용된다.

 

[그림-3] 공유 폴더 접속을 위한 브루트-포스 공격 시도

 

123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,696969,

shadow,master,666666,qwertyuiop,123321,mustang,1234567890,michael,654321…,freepass

[-3] 1000개의 암호 목록 일부

 

참고로 [-3]에서 언급한 1000개의 암호 목록은 Github‘1000-most-common-passwords.txt라는 이름으로 업로드 되어있다.

(https://github.com/DavidWittman/wpxmlrpcbrute/blob/master/wordlists/1000-most-common-passwords.txt)

공유 폴더 사용자는 유추하기 쉬운 패스워드 사용을 사용하지 않아야 하며, 패스워드를 주기적으로 변경하여 공유 폴더를 통한 악성코드 감염에 주의해야 한다.

 

이모텟 악성코드를 공격 대상 공유 폴더에 복사 및 원격 실행

 

이모텟 악성코드는 공격 대상의 네트워크 공유 폴더에 접근이 되면 GetTickCount API를 통해 얻은 난수값을 생성할 서비스 이름 및 파일명으로 사용한다. 이후 CopyFileW, CreateServiceW API를 호출하여 네트워크로 연결된 사용자의 PC에 이모텟 악성코드를 실행한다.

 

[그림-4] 공격 대상의 공유 폴더에 이모텟 악성코드 복사 및 원격 실행 코드 일부분

 

현재 이모텟 악성코드에 대한 연구가 계속되고 있으며, 이모텟 악성코드에 대한 추가 분석 내용은 ASEC Report 3분기에서 공개될 예정이다.

(http://www.ahnlab.com/kr/site/securityinfo/asec/asecReportView.do?groupCode=VNI001)

 

또한 공유 폴더를 통한 이모텟 악성코드 전파에 사용되는 모듈 이외에 다른 모듈에 대한 내용도 확인이 되면 ASEC 블로그에 내용을 공개하도록 하겠다.

 

V3 제품군에서는 이모텟 악성코드와 관련된 모듈을 다음과 같은 진단명으로 탐지하고 있다.

<V3 제품군 진단명>

-       Trojan/Win32.Emotet (2017.09.20.00)

신고
Posted by myunguk.han

지난 포스팅에 이어, 이번에는 또 다른 유형의 '랜덤픽셀 이미지' 를 포함하는 악성코드를 소개한다.

     [유형-1] 리소스 섹션에 비트맵 이미지 형태의 인코딩 된 데이터를 포함하는 악성코드


 [2] VisualBasic Form 내부에 비트맵 이미지 형태의 인코딩 된 데이터를 포함하는 악성코드

두 번째로 살펴볼 유형의 악성코드는 VisualBasic으로 컴파일 된 파일의 특징을 갖는다. [그림 7]과 같이 [유형-2] 의 샘플들은 총 3개의 섹션을 포함하는데, [유형-1] 과는 다르게 랜덤픽셀 이미지가 리소스(.rsrc) 섹션이 아닌 텍스트(.text) 섹션에 존재한다. 이러한 차이가 발생하는 이유는 VisualBasic 컴파일러의 특징 때문인데, VisualBasic 파일들은 고유한 내부 구조를 유지하기 때문에 GUI 프로그램에 필요한 그림 데이터를 텍스트 섹션에 포함하고 있다.

[그림 7] 악성코드 유형-2의 섹션 구조

[유형-1] [유형-2] 사이에는 랜덤픽셀 이미지의 구성 상의 차이점도 있다. [유형-1]의 경우는 다양한 색상의 배경 그림이 있고 랜덤픽셀 영역이 이미지 중앙에 밀집된 반면, [유형-2] 의 경우에는 배경색이 대체로 검정 또는 흰색이며, 랜덤픽셀 영역 중간에 띠와 같은 무늬가 발견된다. 이러한 무늬가 생기는 원인은, 랜덤픽셀 중간에 검정 또는 흰색 점을 일정 크기만큼 추가하기 때문인데, 아마도 보안제품의 진단회피를 위한 목적으로 추정된다. [그림 8][유형-2]에 해당하는 3개 샘플 내부에 포함된 랜덤픽셀 이미지를 나열하였다.

[그림 8] 악성코드 유형-2 내부의 랜덤픽셀 이미지

동일한 [유형-2] 의 악성코드라도, 각 파일의 내부에 존재하는 랜덤픽셀 이미지의 크기가 매우 다양하다. 대체로 200kb – 300kb 사이의 이미지가 많이 발견 되었지만, 5MB에 달하는 이미지도 발견되었다. 또한 파일 내에서 랜덤픽셀 이미지가 등장하는 위치가 모두 다르며, 이미지의 정확한 위치를 파악하기 위해서는 VisualBasic 파일의 내부 데이터 구조에 따라 일부 파싱이 필요하다. VisualBasic 데이터 구조 중 내부의 Form 데이터를 확인할 경우 [그림 9]와 같이 랜덤픽셀 이미지가 참조되는 부분을 발견할 수 있다.

[그림 9] VisualBasic Form 내부의 랜덤픽셀 이미지 참조 부분

[유형-2] 샘플의 또 다른 특징은 다소 부자연스러운 버전 정보를 갖는다는 점이다. 아래 [-1] 3가지 샘플의 버전 정보를 표시하였다. 일부 랜덤하게 생성된 문자열도 발견되며, 잘 알려진 회사명이 보이기도 하지만, 전체적으로 일관된 내용이 아닌 다소 의미 없는 문자열의 나열을 확인할 수 있다. 보안 제품에서 실행파일의 버전 정보를 진단에 활용할 수 있기 때문에, 버전 정보를 비워두거나 일관된 내용을 사용하지 않고 이런 식의 예측 불가능한 문자열을 사용했을 것으로 예상된다.

 

샘플 2-1

샘플 2-2

샘플 2-3

Comments

hewlett-packard co.

 

YAHOO! inc

CompanyName

canon

free tIme

PANDora TV

FileDescription

#co_Name Inc.

Latta

 

FileVersion

1.09.0003

1.03.0009

8.08.0006

InternalName

Haveyour

KIlatos

NAtting

LegalCopyright

 

 

 

LegalTrademarks

 

 

 

OriginalFilename

Haveyour.exe

KIlatos.exe

NAtting.exe

ProductName

#co_Name Inc.

BeBiRd

WWw.biTDOwnLoader.COM

ProductVersion

1.09.0003

1.03.0009

8.08.0006

PrivateBuild

 

 

 

SpecialBuild

 

 

 

Language

1033

1033

1033

Codepage

1200

1200

1200

 

[유형-1] 의 샘플들과 마찬가지로 [유형-2]의 샘플 또한 최초 실행된 상태에서 바로 악성행위를 하지 않고, 내부에서 디코딩을 통해 실제 악의적인 행위를 수행하는 코드를 복원하여 사용한다. , 내부에 은닉된 악성코드가 무엇인지 파악하기 전에는 외형만으로는 실제의 악성행위를 예측할 수 없다. 예제로 사용한 [샘플 2-1] 의 경우 내부에 포함된 실제 악성코드는 Delphi로 제작된 DarkComet으로 알려진 백도어이다. [샘플 2-2]의 경우는 Cerber 랜섬웨어이며 [샘플 2-3] 도 내부에 백도어 형태의 악성코드를 포함한다.

AhnLab V3 에서는 [유형-2] 의 샘플을 다음과 같은 진단명으로 진단한다.

-       Win-Trojan/VBKrypt.RP

-       Win-Trojan/VBKrand.Gen


지금까지 두 번에 걸쳐 '랜덤픽셀 이미지' 를 포함하는 악성코드의 두 가지 유형에 대해 살펴보았다. 각 악성코드의 유형과 특징에 대한 더 상세한 정보는 <월간 安> 2017년 11월 호에 소개될 예정이다. 

[월간 안 바로가기]

신고
Posted by disruption

IT 기술이 발전하는 만큼, 그리고 다양한 보안 제품과 장비에서의 기술이 발전하는 만큼 악성코드에서 사용하는 기술 또한 정교해지고 복잡하게 발전하고 있다는 점은 이미 널리 알려진 사실이다. 특히 악성코드 제작자의 입장에서는 1차적으로 보안 장비/제품에서 탐지되지 않는 것이 매우 중요하므로 다양한 탐지 회피 기법을 적극적으로 도입하고 있다. 탐지 회피 기법의 대표적인 예로는 악성코드의 외형을 가급적 정상 파일과 비슷하게 유지하면서 악의적인 데이터를 파일 외부에서 바로 확인할 수 없도록 인코딩 등의 과정을 거쳐 은닉하는 방법이 있으며, 악성코드의 종류에 따라 매우 다양한 데이터 은닉 기법이 발견되고 있다.

이러한 은닉 기법 중에서 인코딩 된 데이터가 비트맵 이미지 (BMP) 형태로 위장된 형태의 악성코드에 대해서 소개할 예정이며, 다음과 같이 두 가지 유형에 대해서 총 2회에 걸쳐 설명한다.

[유형-1] 리소스 섹션에 비트맵 이미지 형태의 인코딩 된 데이터를 포함하는 악성코드

[유형-2] VisualBasic Form 내부에 비트맵 이미지 형태의 인코딩 된 데이터를 포함하는 악성코드

 

[0] 비트맵 이미지 (BMP)

해당 유형의 악성코드를 자세히 살펴보기 이전에 먼저 비트맵 이미지에 대해 기본적인 이해가 필요하다. 비트맵 (BITMAP) 이란 비트(BIT) 와 맵(MAP) 의 합성어로, 일련의 비트가 나열된 데이터의 집합을 의미한다. 비트는 컴퓨터에서 데이터를 표현하는 데 사용되는 최소의 단위이며 01로 구성된다. 비트맵으로는 단순한 데이터를 저장할 수도 있지만 이미지 데이터를 저장할 경우에는 비트맵 이미지로써 해석될 수 있다.

비트맵 이미지는 비트맵 헤더이미지 데이터로 구성되어 있다. 비트맵 헤더는 운영체제 또는 응용프로그램에서 비트맵 이미지를 제대로 해석하기 위해 필요한 정보로, 운영체제에 따라 일부 차이가 있으나 여기서는 Windows 기준으로 설명한다.

비트맵 이미지의 시작 부분에는 BitmapFileHeader BitmapInfoHeader 가 위치하고 있다. BitmapFileHeader "BM" 문자열로 시작하며, 비트맵 이미지의 전체 크기와 이미지 데이터가 시작되는 위치에 대한 정보를 포함된다. 바로 이어서 등장하는 BitmapInfoHeader 에는 이미지의 가로, 세로 크기와 사용되는 색상의 심도, 압축 사용 여부 등의 정보를 포함하고 있다. 실제 비트맵 이미지 파일에서 각 헤더와 이미지 데이터의 모습을 [그림1] 에 표시하였다.

[그림 1] 비트맵 이미지 구조

앞서 분류한 두 가지 유형의 악성코드에는 내부에 비트맵 이미지를 포함되어 있다고 소개했다. 그렇다면 해당 비트맵 이미지는 어떤 그림을 표현하고 있을까? 특이하게도 악성코드 내부의 이미지들은 아래 [그림 2]와 같이 사람이 보기에는 의미를 찾을 수 없는 형태로, 다양한 색의 점으로 가득 찬 모습이다. 이러한 형태의 비트맵 이미지를 본 문서에서는 '랜덤픽셀 이미지' 라고 지칭하며, 이제부터 각 유형의 악성코드와 랜덤픽셀 이미지에 대해 조금 더 자세히 살펴보겠다.

[그림 2] 악성코드 [유형-1] [유형-2] 내부의 랜덤픽셀 이미지

 

[1] 리소스 섹션에 비트맵 이미지 형태의 인코딩 된 데이터를 포함하는 악성코드

[유형-1]의 악성코드는 섹션의 개수, 진입점(EntryPoint) 부분 코드의 흐름 등 구조적으로 Visual Studio 로 컴파일 된 실행파일의 특징을 보인다. 4개의 섹션 중 리소스(.rsrc) 섹션에 다양한 리소스 엔트리를 포함하고 있는데, [그림 3] 에서 확인할 수 있듯 공통적인 특징으로 BITMAP 엔트리가 존재한다. BITMAP 엔트리는 실행파일 내부에서 사용하는 이미지 파일이 저장되는 곳으로, GUI 기반의 실행파일에서 흔하게 확인이 가능한 리소스이다.

[그림 3] 악성코드 유형-1 의 섹션 구조

[유형-1] 악성코드는 랜덤픽셀 이미지를 BITMAP 리소스 엔트리 내부에 포함하고 있다. 같은 유형의 악성코드일지라도 개별 파일간에 차이가 존재하여, BITMAP 리소스 엔트리 내부에 1개의 이미지만 포함하는 경우도 있고, 다수의 이미지를 포함하기도 한다. 주요한 특징은 [유형-1] 악성코드라면 BITMAP 리소스 엔트리 내에 랜덤픽셀 이미지가 반드시 1개는 존재한다는 점이다. [그림 4] 에 나타난 것과 같이 [샘플 1-1]BITMAP 리소스 엔트리 내에 2개의 비트맵 이미지를 포함하며, 그 중 두 번째 이미지가 랜덤픽셀 이미지이다. [샘플 1-2]의 경우는 총 3개 중 세 번째 이미지에, [샘플 1-3]은 내부에 1개의 랜덤픽셀 이미지만 존재한다.

[그림 4] 악성코드 [유형-1] 내부의 랜덤픽셀 이미지

그렇다면 악성코드가 내부에 이러한 랜덤픽셀 이미지를 포함하는 이유는 무엇일까? 비트맵 이미지로 해석되고 있는 이 이미지들은 사실은 악성코드가 실제 악성 행위를 수행하기 위해 2차로 만들어내는 또 다른 악성코드를 인코딩 한 데이터이다.

[샘플 1-1]의 코드 흐름을 따라가보며 확인해보겠다. 해당 샘플의 main 함수 내에 진입하면, 처음에는 의미 없는 코드가 일부 실행되다가 [그림 5] (1)과 같이 메모리를 할당 받는 코드가 등장한다. 그 이후 파일 본체에서 특정 위치를 참조하여(2) 해당 데이터를 할당 받은 메모리에 복사하는(3) 루틴이 존재한다.

[그림 5] 샘플 1-1 에서 랜덤픽셀 이미지를 참조하는 부분

복사되는 데이터의 위치를 실제 그림에서 확인해보면, [그림 4] 에 나타난 [샘플 1-1] 의 그림에서 아래쪽 부분의 분홍색 영역과 랜덤픽셀 이미지 영역의 경계 부분에 해당한다. , 분홍색의 바탕 그림 부분은 악성 데이터에 해당되지 않으며, 중간영역의 랜덤픽셀 이미지 부분만이 유효한 악성 데이터로서 사용된다. 사람이 보기에는 의미를 알 수 없는 랜덤픽셀 이미지 형태가 나타나는 이유는 해당 데이터가 본래 '그림'을 나타내기 위한 데이터가 아닌 인코딩 된 형태의 데이터이기 때문을 알 수 있다.

랜덤픽셀 이미지 영역에서부터 복사해온 데이터를 디코딩하는 방법은 악성코드의 종류별로 약간 차이가 있으나, [샘플 1-1] 의 경우 TEA (Tiny Encryption Algorithm) 를 통해 디코딩 하고 있다. [그림 6] 에 랜덤픽셀 이미지의 디코딩 전 후 내용과 TEA 코드 부분 일부를 포함하였다.

[그림 6] 랜덤픽셀 이미지 영역의 디코딩

이와 같이 내부에 디코딩 된 코드로부터 본격적인 악성행위가 발생하기 때문에, 외형상의 특징만으로 어떠한 악성행위를 하는 악성코드인지를 바로 판단하는 것은 어렵다. 본문에서 예제로 든 3가지 샘플 또한 서로 다른 기능의 악성코드로, [샘플 1-1][샘플 1-3]의 경우는 SageCrypt 랜섬웨어이며 [샘플 1-2]Matrix 랜섬웨어이다. 랜섬웨어 이외에도 Trojan 이나 Backdoor 등의 악성코드에서도 [유형-1]의 특징을 갖는 경우가 다수 발견되었다.

AhnLab V3 에서는 [유형-1] 의 샘플을 다음과 같은 진단명으로 진단한다.

-       HEUR/Ranpix.Gen

신고
Posted by disruption


 Globeimposter 랜섬웨어는 안랩의 악성코드 위협 분석 및 클라우드 진단 시스템인 ASD(AhnLab Smart Defense)에서 확인되고 있다. 해당 랜섬웨어는 다운로드 기능이 있는 워드(매크로)나 자바 스크립트가 메일에 첨부된 MalSPAM 형태로 많이 유포되고 있다.

Globeimposter 랜섬웨어는 실행 시 C:\Documents and Settings\All Users\ 경로에 자가 복제하며 복제된 파일은 HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce 경로에 등록한다. %temp%경로에 bat파일을 생성 및 실행 한다. bat파일은 vssadmin.exe 를 이용하여 볼륨 쉐도우를 삭제하여 윈도우 운영체제에서 제공하는 파일 백업 및 복원 기능을 사용할 수 없게 한다. 그 후 Windows의 제공 기능인 원격 제어 데스크톱(RDP)의 레지스트리 설정 값을 삭제한다.

[그림 1] 볼륨 쉐도우 삭제


Globeimposter 랜섬웨어는 프로세스 목록을 검사하여 프로세스 이름 중 sql, outlook, ssms, postgre, 1c, excel, word 가 포함된 프로세스를 종료시킨다.


[그림 2] 프로세스 종료 루틴

 

Globeimposter 랜섬웨어는 암호화시 모든 드라이브를 GetDriveTypeA 로 검색하여 리턴값이 2(이동식 매체), 3(고정 매체), 4(네트워크 드라이브)인 경우에 암호화 행위를 수행 한다. 암호화 대상은 [1]의 암호화 제외 경로에 존재하는 파일을 제외하고 모든 파일을 암호화 시킨다. 내부의 로직 상 [1]의 암호화 제외 경로와 [2]의 암호화 제외 확장자를 가지고 있다. 구현의 실수인지 의도한 것인지 알 수는 없지만 [2]의 암호화 제외 확장자는 비교에는 사용되지만 암호화 시 그 대상이 적용되지 않는다. 실제 감염 이후 [그림 3]처럼 재부팅이 안되는 현상을 볼 수 있다.

[1] 암호화 제외 폴더

 


[2] 암호화 제외 확장자


[그림 3] 재부팅 불가

 

암호화된 파일은 [그림 4]와 같은 형태로 암호화된다. 파일을 읽어와 최초 0x2000 크기를 암호화 한 후 같은 크기만큼 뛰어넘고 다시 0x2000 만큼 암호화시키는 형태로 파일을 암호화 한다. 암호화가 끝난 후 대상 파일의 정보를 암호화 하여 0xB0 크기로 파일에 추가하고, 랜섬웨어가 생성한 Personal ID 값을 파일의 마지막에 추가한다.


[그림 4] 암호화 형태

 

암호화된 파일은 MoveFileEx APIREPLACE_EXISTING 플래그 값을 사용하여 확장자를 .GOTHAM으로 변경시키며 파일을 암호화 시킨 후 아래와 같은 랜섬노트를 암호화 경로마다 생성 한다. Globeimposter 랜섬웨어의 변형은 지속적으로 발견되고 있으며, 랜섬노트와 감염파일의 확장자는 변형마다 다르게 발견되고 있다.


[그림 5] 랜섬 노트

 

랜섬웨어의 암호화 행위 이후 최초 실행 위치에 bat파일을 생성하여 자가삭제를 시도한다. 자가 복제된 \Documents and Settings\All Users\ 위치의 파일은 삭제되지 않는다.


[그림 6] 자가 삭제

 

현재 V3에서 Globeimposter 랜섬웨어는 다음 진단명으로 진단하고 있다.

-Trojan/Win32.Globeimposter


신고
Posted by kimkk

지난 614Trickbot 악성코드가 악성 스팸메일 형태로 국내로 유포되고 있음을 안랩의 악성코드 위협 분석 및 클라우드 진단 시스템인 ASD(AhnLab Smart Defense)에서 확인되었다. Trickbot 201610월 국외에서 처음 발견, 보고되었다. 주로 호주, 독일, 영국, 북미지역 내 은행 및 결제 시스템 금융정보를 탈취하는 악성코드로 감염된 상태로 온라인 뱅킹 이용 시 입력한 정보가 은행이 아닌 다른 곳으로 유출 될 수 있다.

 

[그림 1] Trickbot 동작 과정

Trickbot 악성코드는 DOC 내의 다운로드 기능을 가지고 있는 매크로를 통해 감염된다.

[그림 2] 악성 매크로 일부 (암호화된 PE 다운로드 URL)

문서 파일을 실행 시 매크로 실행을 통해 특정 URL에 접근을 하여 암호화된 PE%temp%\kkloepp8 경로에 다운로드 한다. 다운로드 URL은 변형 마다 다른 값을 가지고 있다.

접속 주소

http://sa*****li.com/dfg4g4

http://78****************tm.net/af/dfg4g4

http://e6*************md.org/af/dfg4g4

http://st***************ia.com/dfg4g4

[1] 암호화된 PE 다운로드 주소

다운로드 된 암호화된 PE는 복호화 후 %temp%\proshuto8.exe로 저장하고 실행 한다.

Trickbot 악성 코드는 %appdata%\winapp 경로에 자신과 동일한 파일을 파일명을 시저 암호화 방법으로 생성하고 실행한다.

- %appdata%\winapp\qsptivup9.exe

 

그 후 작업 스케줄러에 등록하여 지속적으로 파일이 실행 되도록 설정한다.

[그림 3] 작업 스케줄러 등록

C2 연결을 통해 아래의 구성 파일들을 추가 생성한다.

생성 파일

%appdata%\winapp\cliend_id

%appdata%\winapp\group_tag

%appdata%\winapp\config.conf

%appdata%\winapp\Modules\systeminfo32

%appdata%\winapp\Modules\injectDll32

%appdata%\winapp\Modules\injectDll32_configs\dinj

%appdata%\winapp\Modules\injectDll32_configs\dpost

%appdata%\winapp\Modules\injectDll32_configs\sinj

[2] Trickbot이 생성한 파일

 

각 구성 파일의 기능은 아래와 같다.

구성 파일

기능

client_id

사용자 정보와 식별 값(ComputerName + OS Version + RanndomString 32)이 저장 되어 있다

group_tag

내부 데이터 (config.conf)gtag 태그에 위치한 값(mac1)이 저장되어 있다.

config.conf

Trickbot의 설정 파일로 암호화 되어 저장된다. Trickbot 버전, group_tag, C&C IP 등의 정보가 포함되어 있다.

systeminfo32

PC 의 시스템 정보를 수집하는 모듈로 암호화 되어 저장 되어있다. 윈도우    버전, CPU 타입, RAM, 사용자 계정, 설치된 소프트웨어, 서비스 목록 등을 수집하여 저장한다.

injectDll32

웹브라우저에 인젝션 되는 모듈로 인터넷 뱅킹을 모니터링 하고, 정보를 탈취 하는 기능을 가지고 있다.

dinj / sinj

injectdll 의 설정 파일로 공격 대상(온라인뱅킹)에 대한 정보를 저장하고 있다.

dpost

탈취한 정보를 전송할 IP 주소를 저장하고 있다. (http://91.206.4.216:8082)

해당 IP는 변형 마다 다른 값을 가지고 있다.

                                       [표 3] Trickbot 생성 파일 기능 정리

[그림 4] 공격 대상 정보가 포함된 dinj, sinj

Trickbot 악성코드는 공격 대상의 뱅킹 사이트에서 입력한 값을 공격자에게 전송하도록 하여 금융정보를 탈취한다.

 

현재 V3에서 Trickbot 은 다음 진단명으로 진단하고 있다.

- Trojan/Win32.Trickbot (2017.06.14.03)

저작자 표시 비영리 변경 금지
신고
Posted by cka5

우리말로 덩굴옻나무로 해석되는 Poisonivy는 정상 원격제어 프로그램으로 2005년부터 제작되었으며 서버 생성과 원격제어 기능을 가지고 있는 클라이언트를 생성한다. 200811월까지 업데이트가 되었으며 현재는 개발이 중단된 상태이다. 하지만 Poisonivy 제작자의 의도와는 다르게 뛰어난 기능 및 편리한 플러그인 설치 기능으로 인해 악의적인 목적으로 많이 사용되고 있다.

[그림-1] Poison Ivy 제작자 홈페이지 (현재는 폐쇄)

Poisonivy를 이용한 주요 공격 사례는 다음과 같다.

일시

내용

2008

해외 금융 서비스 업계

2009

미국 및 해외의 방위산업 계약자

20113

EMC RSA 해킹

2011

The Nitro Attacks

2012

Molerats (aka Gaza Hackers Team)에서 이스라엘 정부 공격

20172

몽골 정보 기관 공격

[-1] Poisonivy를 이용한 공격 사례


2008년도 경 해외 금융 서비스 업계 공격에 사용된 정황이 가장 먼저 확인되었으며 2009년에는 방위산업에 가담하고 있는 업체들 컴퓨터에서 Poisonivy가 발견되었다.

공격자에게 유용한 RAT(Remote Administration Tool)로 전세계에 이름을 알리게 된 것은 2011 3 EMC RSA가 해킹되어 OTP 생성 소스 코드가 유출된 사건이었다. 공격에 사용된 샘플은 2011 8월 핀란드 F-시큐어 블로그에 공개되었다. 기본적으로 문서 파일 취약점을 이용해 취약점이 존재하는 시스템에서 문서를 열어 볼 때 Poisonivy 백도어를 설치했다. 훔친 OTP 정보를 바탕으로 2011 5월 록히드마틴(Lockheed Martin) 내부 시스템에 접속해 정보를 유출했다. 2011 10월 미국 시만텍이 공개한 니트로 공격(The Nitro Attacks)과 2017년 2월 몽골 정보기관 공격에도 Poisionivy는 사용되었다.

 

특징

Poisonivy 서버 파일의 크기는 6~10KB 정도로 작은 게 특징이다. 크기가 이렇게 작은 이유는 서버가 어셈블리로 제작되었으며 주요 기능은 파일로 존재하지 않고 클라이언트에 접속 후 메모리에만 다운로드한다. 원격제어 기능만 보면 다른 프로그램과 크게 차이가 없지만 Poisonivy가 인기 끄는 이유는 모듈화, 스레드, 확장 기능으로 생각된다.

 

[그림-2] 인터넷 익스플로러 메모리에 삽입된 Poisonivy

서버를 생성할 때 실행 파일 이외에 쉘코드(shellcode) 형태로도 존재한다. 쉘코드는 C, 델파이, 파이썬 등으로 만들 수 있다. 쉘코드 형태로 제작해 스크립트 형태로 실행할 경우 화이트 리스트 기반 보안 제품도 우회할 수 있다.

 

기능

피해자의 컴퓨터에 설치할 프로그램을 빌드 할 때 레지스트리 Run 키 이름, 복제 위치(System 경로 or Windows 경로), 자가 삭제 기능 등을 설정할 수 있다.

[그림-3] 빌드 초기 설정

악성코드가 실행되면 스레드(Thread)로 동작하며 시스템 폴더나 윈도우 폴더에 복사 한 뒤 설정에 따라 원본 파일을 삭제하고 레지스트리에 등록한다.

[그림-4] 초기 설정 코드(파일 복사 및 파일 삭제)

설정에 따라 기본 브라우저나 자기 자신 또는 원하는 프로세스에 인젝션을 할 수 있다. 일반적으로는 시스템의 기본 브라우저를 찾아 해당 메모리 영역에 악성코드를 삽입한다.

[그림-5] 기본 웹 브라우저 확인 후 인젝션

이후 필요한 나머지 기능은 네트워크를 통해 받아 메모리에서 동작한다.

 

[그림-6] 주요 기능 및 시스템 정보 획득

Poisonivy의 주요 기능이다. 아래에 표로 내용을 정리하였다

주기능

세부 기능

제어

파일 삭제 및 복사, 레지스트리 등록 및 삭제, 프로세스 정보 획득 및 종료, 서비스 삭제 및 등록, 디바이스, 정보 획득, 실행창 정보 획득

도구

포트스캔, 리모트 쉘 실행, 저장된 암호 유출

감시

키로킹, 오디오, 스크린샷, 웹캠

관리

업데이트, 재시작, 자가 삭제

[-2] Poisonivy 기능

상기 [-2]이외에 플러그인 및 업데이트를 통해 새로운 기능 추가도 가능하다


암호화 된 통신

PoisonIvy 설명서에 따르면 통신 암호화는 256 비트 Camellia 암호화로 이뤄졌다. 일본에서 제작한 암호화로 관련 홈페이지에서 암호화 관련 소스 코드도 다운로드할 수 있다.

[그림-7] Camellia 홈페이지

지정된 암호 값(기본값은 admin)을 알면 패킷의 암호를 풀 수 있다.

[그림-8] 패킷으로 전송되는 PE

전송된 패킷을 복호화할 경우 위 그림과 같이 명령어를 통해 모듈별 PE가 전송되는 것을 확인할 수 있다.

현재 V3에서 Poisonivy 백도어는 다음 진단명으로 진단하고 있다.

-       Trojan/Win32.Poison (2011.11.14.00)




신고
Posted by JYP

2017년 6월 27일, 우크라이나에서 Petya 이름의 랜섬웨어 감염 피해가 보고되었다. 사실 Petya 랜섬웨어는 파일을 암호화하는 다른 랜섬웨어와 달리 부팅을 불가능하게 하는 유형(MBR, MFT 암호화)으로 이미 알려진 형태이다. 하지만, 이번에 이슈 된 Petya는 지난 5월 WannaCryptor 랜섬웨어에서 사용한 SMB 취약점(CVE-2017-0144)을 사용하여 네트워크 전파기능이 추가되면서 피해가 큰 것이 특징이다. 또한, 기존 형태와 달리 일부 확장자 파일들에 대한 암호화도 진행하는 등 다양한 기능이 추가된 것을 확인할 수 있다. SMB 취약점(CVE-2017-0144)은 MS 보안패치 MS17-010에 포함되었으므로 감염 확산을 막기 위해서는 보안패치 적용이 필요하다.

 

1. 동작과정

[그림-1] 랜섬웨어 동작과정

[그림-1]은 랜섬웨어의 전체적인 동작과정 및 내부 파일의 구조를 나타낸다. 최초 감염방식은 MEDoc (Ukraine Financial Software) 이름의 프로그램의 업데이트 과정에서 발생한 것과 MS 오피스 취약점(CVE-2017-0199)을 이용한 방식 2가지가 알려져 있다. 랜섬웨어는 DLL 형태로 제작되었으며, 네트워크 전파를 위해 SMB 취약점 외에 ‘Mimikatz’(Credential Dumping Tool) 이름으로 알려진 소스코드를 이용하여 원격지 접속을 위한 계정정보 획득을 시도한다. 악성코드 내부에 별도의 취약한 계정정보(ID/PW)를 갖고 있지는 않다. 아래는 Petya 랜섬웨어에서 수행하는 악의적인 기능들을 나타낸다.

- MBR 감염
- 네트워크 전파
- 파일 암호화
- 시스템 재부팅 시도
- MFT 암호화
- 부팅불가

아래의 [그림-2]는 랜섬웨어(ex. “2.dll”) 감염 시 발생하는 행위로그를 나타낸다. Action 항목에“Write physical disk” 라고 표시된 부분이 MBR 감염시도를 나타내며, “at.exe”를 실행한 부분은 재부팅을 위한 윈도우 작업스케줄 등록부분이다. %temp% 경로에 생성되는 “[랜덤숫자].tmp” 파일(ex. 1.tmp)은 ‘Mimikatz’ 툴로 계정정보 획득을 위한 악성코드이다. 이후 전파를 위한 네트워크 대역 내의 IP를 순회하면서 139/445 포트가 열려있는 시스템을 탐색하는 기능을 수행한다. 전파시도와 동시에 파일에 대한 암호화(AES-128) 작업도 이루어지며, [그림-2]에서는 바탕화면에 위치한 “TEST_Word.docx” 파일이 암호화된 것을 확인할 수 있다.

[그림-2] 행위로그

재부팅을 시도하기 위해 수행하는 윈도우 작업스케줄 등록작업은 아래와 같은 명령을 통해 이루어지며, 윈도우 버전에 따라 명령에 차이가 있다.

schtasks /RU “SYSTEM” /Create /SC once /TN “” /TR “C:\Windows\system32\shutdown.exe /r /f” /ST [H:M]

at [H:M] C:\Windows\system32\shutdown.exe /r /f

작업스케줄 등록을 통해 일정시간(1시간 내 가변)이 지난 후에는 시스템이 재부팅 되며, 이후 감염된 MBR 코드가 실행된다. 윈도우 작업스케줄을 이용한 방법 외에도 강제 BSOD 발생을 위해 “NtRaiseHardError” API 를 호출하는 경우도 존재한다. 재부팅 후에는 감염된 MBR(Master Boot Record) 코드에 의해 MFT(Master File Table)에 대한 암호화가 이루어진다.

원격지에 파일복사가 이루어진 후, 실행을 위해서는 MS에서 제공하는 PsExec(Sysinternals: 원격지 파일실행) 와 WMIC(WMIC.exe: Windows Management Instrumentation Command)라는 툴이 사용된다. 또한, Credential 정보를 이용한 원격지 복사가 실패한 경우, 마지막 단계에 SMB 취약점을 이용한 전파가 이루어진다. 재부팅 전 아래와 같은 명령을 통해 윈도우 이벤트 로그를 삭제하는 기능을 수행한다.

cmd.exe /c wevtutil cl Setup & wevtutil cl System & wevtutil cl Security & wevtutil cl Application & fsutil usn deletejournal /D <드라이브>:

[그림-1]에서 알 수 있듯이 DLL 파일 내부의 리소스 영역에는 총 4개의 RCDATA 이름의 항목이 존재하며, 각각 Mimikatz 툴(32비트/64비트)과 PsExec 툴, SMB 취약점관련 쉘코드로 구성된다.

 

2. 주요기능

(1) MBR 감염

랜섬웨어 실행 시, 가장 먼저 수행되는 작업이 MBR에 대한 감염이며 아래의 [그림-3]은 Petya에서 사용하는 MBR 감염코드를 나타낸다.

[그림-3] MBR 감염코드 부분

정상적인 부팅을 위해 필요한 원본 MBR 정보는 아래의 [그림-4]에서처럼 디스크의 0x4400 옵셋위치에 고정된 키 값(0x07)로 XOR 된 상태로 백업된다. MBR 정보는 단순한 암호화 방식으로 암호화 및 백업이 되어있어 복구가 가능한 구조이나, 이후에 진행되는 MFT에 대한 암호화 작업은 Salsa Stream 암호화라는 알고리즘을 통해 이루어지며 복구에는 키 정보가 필요한 구조이다.

[그림-4] MBR 백업코드 부분

아래의 [그림-5]는 실제 디스크 옵셋 0x4400 위치에 원본 MBR 코드가 암호화된 상태로 백업된 것을 확인할 수 있다.

[그림-5] MBR 백업데이터

 

(2) 네트워크 전파

원격지에 자신을 복사하기 위해서 크게 메모리상의 Credential 정보획득(CredEnumerate, Mimikaz)을 통한 ADMIN$ 공유폴더에 복사와 SMB 취약점을 이용한 전파 2가지가 이루어진다. ADMIN$ 에 복사된 DLL 형태의 랜섬웨어를 구동하기 위해 PsExec 혹은 WMIC 2가지 툴이 사용되며, 취약점을 이용한 경우 쉘코드를 통해 구동되는 특징을 갖는다. 또한, 전파방식 2가지 중 ADMIN$ 를 통한 복사가 실패한 경우에 한해 SMB 취약점을 시도하는 구조이다. 아래의 [그림-6]은 "EternalBlue" 취약점(CVE-2017-0144) 및 랜섬웨어 복사와 관련된 패킷 데이터 중 일부를 나타낸다. 

 

[그림-6] SMB 취약점 패킷

아래의 [그림-7]은 Credential 정보획득을 통해 원격지의 ADMIN$ 공유폴더에 복사 후 구동된 화면을 나타낸다. 테스트 시 랜섬웨어 파일을 “a.dll”로 실행하였으며 원격지의 %windows% 폴더에 “a.dll” 이름으로 복사 후 실행 시 확장자가 제거된 “a” 이름으로 존재함을 확인할 수 있다. 이러한 증상은 랜섬웨어 코드에 확장자 제거 및 실행 후 0바이트로 변경하는 기능에 의한 것으로 진단우회 및 기 감염여부 체크를 위한 것으로 판단된다.

[그림-7] 원격지 파일복사 및 실행

아래의 그림은 DLL 형식의 랜섬웨어를 구동 시, #1 통해 첫 번째 Export 함수호출을 통해 최초 동작이 이루어짐을 알 수 있다. 이후의 인자 값 60은 재부팅 시간(분)을 나타내는 것으로 디폴트 설정 값이 60으로 되어있다. 하지만, 실제 60분 뒤 재부팅이 이루어지는 것은 아니며, 해당 값을 가지고 연산을 통해 얻은 랜덤 시간에 재부팅이 수행된다. (최소 13분~최대 60분)

[그림-8] 원격지 랜섬웨어 구동

아래의 [그림-9]는 원격지에 파일복사 및 구동을 위해 사용하는 PsExec WMIC 관련 코드부분을 나타낸다. (아래의 표에서 “dllhost.dat” 파일은 PsExec 툴을 나타냄)

C:\WINDOWS\dllhost.dat \\192.168.209.3 -accepteula -s -d C:\Windows\System32\rundll32.exe ""C:\Windows\a.dll"",#1 60"

[그림-9] 원격지 파일복사 및 실행

 

(3) 파일 암호화

파일 암호화에는 CryptGenKey API 를 통해 생성된 하나의 대칭키(AES-128)를 사용하며, 해당 대칭키는 다시 공개키를 통해 암호화되어 "C:\ReadMe.txt" 파일에 저장된다. 즉, 해당 공개키에 매칭되는 개인키 정보가 없이는 복구가 불가능한 구조를 갖는다. WannaCryptor 복구에 언급된 메모리 상에 존재하는 키 정보를 활용한 복구도 Petya의 경우는 1시간 내에 강제 재부팅이 이루어짐으로 어려울 것으로 판단된다. 또한, 공개키가 공격자와 통신을 통해 네트워크로 받아지는 구조가 아님으로 악성코드 내부에는 별도의 C&C 주소가 존재하지 않는다. 아래의 [그림-10]에서 붉은색으로 표시된 “Your personal installation key” 부분이 공개키로 암호화된 AES-128 키를 BASE64도 다시 암호화한 값을 나타낸다.

[그림-10] ReadMe.txt 내용

 

(4) MFT 암호화

감염된 MBR 코드에 의해 부팅 시 아래의 [그림-11]과 같은 화면이 사용자에게 보여진다. 문구내용을 보면 CHKDSK 를 이용하여 시스템을 점검하는 정상적인 과정으로 인식할 수 있으나, 해당 문구는 악성코드 내에 존재하는 것으로 실제는 CHKDSK가 아닌 MFT에 대한 암호화 작업을 수행한다.

[그림-11] 부팅 시 화면 (허위 CHKDSK)

아래의 [그림-12]는 감염된 MBR 코드에서 MFT 테이블을 암호화하는 코드 중 일부를 나타낸다. Salsa20 암호화에서 사용하는 키 정보(Nonce, Key)를 통해 MFT 테이블에 대한 암호화가 수행된다. 키 정보는 디스크의 특정위치(0x4000)에 백업되어 있다.

[그림-12] MFT 암호화 코드

MFT에 대한 암호화 작업이 완료되면, 아래의 [그림-13]과 같은 화면이 사용자에게 보여진다. 사용자에게 $300 상당의 비트코인 결제를 유도하며, 결재 완료 시 제작자로 추정되는 메일주소를 통해 복구에 필요한 Key 정보를 전달받는 구조이다.

[그림-13] 비트코인 지불요청 화면

하지만, 분석결과 Key 정보를 전달받아도 복구가 불가능한 구조를 갖고 있음이 확인되었다. 실제 MFT 테이블 암호화에 사용된 키 정보(Nonce, Key)가 저장된 부분이 암호화가 완료된 후, 제거되는 것을 알 수 있다. 즉, 해당 Petya 랜섬웨어는 기존 랜섬웨어와 달리 파괴를 목적으로 제작한 것으로 추정할 수 있다.

아래의 [그림-14]는 디스크 옵셋 0x4000 위치에 MFT 암호화에 사용된 키 정보가 암호화 과정을 완료 후, NULL 값으로 채워진 것을 확인할 수 있다.

[그림-14] 복구불가 원인

 

3. V3 대응

Petya 랜섬웨어 관련 V3에서는 아래와 같이 진단하고 있다.

- md5: 71b6a493388e7d0b40c83ce903bc6b04 (V3: Trojan/Win32.Petya) - 랜섬웨어 본체
- md5: e285b6ce047015943e685e6638bd837e(V3: Trojan/Win32.Petya) - 랜섬웨어 본체
- md5: 2813d34f6197eb4df42c886ec7f234a1 (V3: Trojan/Win32.Petya) - Mimikatz x86 
- md5: 7e37ab34ecdcc3e77e24522ddfd4852d (V3: Trojan/Win64.Petya) - Mimikatz x64 

또한, 추가 감염피해를 막기위해 SMB취약점 관련 윈도우 보안패치를 적용하는 것이 필요하다.

SMB 취약점을 이용한 랜섬웨어 공격 주의 권고
- http://www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=25703

SMB 취약점 관련 Windows XP, Server 2003 등 긴급 보안 업데이트 권고
- http://www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=25704

SMB 취약점을 악용한 랜섬웨어 방지 대국민 행동 요령
- http://www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=25723

윈도우 버전별 보안업데이트 다운로드
- http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012598

신고
Posted by yhayoung

2017년 6월 10일 국내 모 유명 웹 호스팅 업체의 리눅스 웹 서버 및 백업 서버 153대가 랜섬웨어 에레버스(Erebus)에 감염되어 서버 내 주요 파일이 암호화되었다고 알려졌다. 이로 인해 현재까지 해당 업체에서 호스팅하는 일부 사이트의 정상적인 접속이 불가능하다.  

이번 공격에 현재까지 총 2개의 에레버스(Erebus) 랜섬웨어 파일이 확인되었으며, 각각 32비트 그리고 64비트 환경에서 동작하는 리눅스용 ELF 파일이다. 악성 파일 내부에 EREBUS 문자열과 암호화 관련 문자열을 다수 포함하고 있다. 악성코드 감염 직후에는 다음과 같은 증상이 확인된다. 

[그림1] 에레버스 랜섬웨어 파일

[그림2] 파일 내 암호화 관련 문자열 포함

- 암호화 대상 파일명 변경: "[영문과숫자조합].ecrypt"
- 랜섬노트 파일 생성: "_DECRYPT_FILE.txt" "_DECRYPT_FILE.html"
- 감염 화면: 

[그림3] 에레버스 랜섬웨어 감염 화면

암호화 대상 파일은 리눅스 운영체제 내에 존재하는 주요 확장자 파일로 .tar, .gz 등의 압축 파일, .jpg, .docx, .xlsx 등 문서 및 그림 파일이 포함된다. 다음은 암호화 대상이 되는 전체 확장자 모음이다.

tar, gz, tgz, taz, bz, tbz, bz2, lz, lzma, lz4, contact, dbx, doc, docx, jnt, jpg, mapimail, msg, oab, ods, pdf, pps, ppsm, ppt, pptm, prf, pst, rar, rtf, txt, wab, xls, xlsx, xml, zip, 1cd, 3ds, 3g2, 3gp, 7z, 7zip, accdb, aoi, asf, asp, aspx, asx, avi, bak, cer, cfg, class, config, css, csv, db, dds, dwg, dxf, flf, flv, html, idx, js, key, kwm, laccdb, ldf, lit, m3u, mbx, md, mdf, mid, mlb, mov, mp3, mp4, mpg, obj, odt, pages, php, psd, pwm, rm, safe, sav, save, sql, srt, swf, thm, vob, wav, wma, wmv, xlsb, 3dm, aac, ai, arw, c, cdr, cls, cpi, cpp, cs, db3, docm, dot, dotm, dotx, drw, dxb, eps, fla, flac, fxg, java, m, m4v, max, mdb, pcd, pct, pl, potm, potx, ppam, ppsm, ppsx, pptm, ps, pspimage, r3d, rw2, sldm, sldx, svg, tga, wps, xla, xlam, xlm, xlr, xlsm, xlt, xltm, xltx, xlw, act, adp, al, bkp, blend, cdf, cdx, cgm, cr2, crt, dac, dbf, dcr, ddd, design, dtd, fdb, fff, fpx, h, iif, indd, jpeg, mos, nd, nsd, nsf, nsg, nsh, odc, odp, oil, pas, pat, pef, pfx, ptx, qbb, qbm, sas7bdat, say, st4, st6, stc, sxc, sxw, tlg, wad, xlk, aiff, bin, bmp, cmt, dat, dit, edb, flvv, gif, groups, hdd, hpp, log, m2ts, m4p, mkv, mpeg, ndf, nvram, ogg, ost, pab, pdb, pif, png, qed, qcow, qcow2, rvt, st7, stm, vbox, vdi, vhd, vhdx, vmdk, vmsd, vmx, vmxf, 3fr, 3pr, ab4, accde, accdr, accdt, ach, acr, adb, ads, agdl, ait, apj, asm, awg, back, backup, backupdb, bank, bay, bdb, bgt, bik, bpw, cdr3, cdr4, cdr5, cdr6, cdrw, ce1, ce2, cib, craw, crw, csh, csl, db_journal, dc2, dcs, ddoc, ddrw, der, des, dgc, djvu, dng, drf, dxg, eml, erbsql, erf, exf, ffd, fh, fhd, gray, grey, gry, hbk, ibank, ibd, ibz, iiq, incpas, jpe, kc2, kdbx, kdc, kpdx, lua, mdc, mef, mfw, mmw, mny, moneywell, mrw, myd, ndd, nef, nk2, nop, nrw, ns2, ns3, ns4, nwb, nx2, nxl, nyf, odb, odf, odg, odm, orf, otg, oth, otp, ots, ott, p12, p7b, p7c, pdd, pem, plus_muhd, plc, pot, pptx, psafe3, py, qba, qbr, qbw, qbx, qby, raf, rat, raw, rdb, rwl, rwz, s3db, sd0, sda, sdf, sqlite, sqlite3, sqlitedb, sr2, srf, srw, st5, st8, std, sti, stw, stx, sxd, sxg, sxi, sxm, tex, wallet, wb2, wpd, x11, x3f, xis, ycbcra, yuv, mab, json, ini, sdb, sqlite-shm, sqlite-wal, msf, jar, cdb, srb, abd, qtb, cfn, info, info_, flb, def, atb, tbn, tbb, tlx, pml, pmo, pnx, pnc, pmi, pmm, lck, pm!, pmr, usr, pnd, pmj, pm, lock, srs, pbf, omg, wmf, sh, war, ascx, tif

단, 다음 경로 내에 존재하는 파일은 암호화되지 않는다.

/bin, /boot, /dev, /etc, /lib, /lib64, /proc, /run, /sbin, /srv, /sys, /tmp, /usr, /var, /.gem, /.bundle,
/.nvm, /.npm

파일 실행 직후 주요 데이터 파일이 암호화되고 랜섬 노트 파일이 생성된다. 암호화된 파일명은 [영문과숫자조합].ecrypt 으로 변경된다. 동일한 키로 암호화된 파일은 암호화된 원본 파일 데이터 앞에 동일한 암호화 키 정보, 사용자 고유 번호 등을 포함한 바이너리가 있다.

[그림4] 암호화 된 파일 바이너리 (0x0~0x470 동일)

에레버스 랜섬웨어는 실행 직후 네트워크 접속 여부와 상관없이 모두 암호화 행위를 수행한다. 파일 내에 존재하는 악성 C&C 주소는 .onion 도메인인 Tor 네트워크를 이용하고 있으며 확인된 주소는 다음과 같다. 

- C&C : 216.126.224.128/24
- Tor 네트워크:
7fv4vg4n26cxleel.onion.to
7fv4vg4n26cxleel.onion.nu
7fv4vg4n26cxleel.hiddenservice.net
7fv4vg4n26cxleel.gbe0.top
qzjordhlw5mqhcn7.onion.to
qzjordhlw5mqhcn7.onion.nu
qzjordhlw5mqhcn7.hiddenservice.net
qzjordhlw5mqhcn7.gbe0.top
7fv4vg4n26cxleel.onion
qzjordhlw5mqhcn7.onion

[그림5] 네트워크 접속이 되지 않을때(상) 암호화된 파일 바이너리 비교

현재 안랩 V3 제품군에서 다음과 같이 진단한다. 

- Linux/Erebus (2017.06.11.01)

신고
Posted by 컴수진