57
1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr

Locky Strike: Smoking the Locky Ransomware

Code

Page 2: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

2

Overview

I. Prevalence of Locky

II. Timeline of Development

III. Technical Analysis Configuration

C&C Communication

File Encryption

IV. Harvesting Configuration

V. Kill Chain

VI. Interesting Observations

Page 3: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

3

WannaCry

Page 4: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

4

Cerber

Page 5: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

5

Locky

Page 6: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

6

How Profitable is Ransomware?

Reference: https://www.elie.net/blog/security/exposing-the-inner-workings-of-the-ransomware-economy

Page 7: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

7

Prevalence: Affiliate Program

Affiliate ID Method

1, 3, 5, 15, 21 Spam email containing a

malicious attachment

(e.g. script, MS Office)

13, 24, 1E Compromised sites that

redirects to Nuclear or

Neutrino Exploit Kit

Page 8: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

8

Locky Developments

Page 9: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

9

Timeline of Developments: 2016

First appeared

No packer

“Locky” registry key

Configuration:

{

AffiliateID;

ccservers;

}

Page 10: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

10

Timeline of Developments: 2016

Packed

Registry key based on VolumeGUID

Configuration(encrypted):

{

AffiliateID;

DGASeed;

delaySeconds;

FakeSvchost;

Persistence;

IgnoreRussian;

ccServers;

}

Page 11: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

11

Timeline of Developments: 2016

Encrypted HTTP communication

Configuration:

{

AffiliateID;

DGASeed;

delaySeconds;

FakeSvchost;

Persistence;

IgnoreRussian;

urlPath;

ccServers;

}

Page 12: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

12

Timeline of Developments: 2016

New URI used

Encrypted HTTP POST data is now

encoded using percent encoding

Page 13: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

13

Timeline of Developments: 2016

Requires argument. (e.g “123”, “321”)

Page 14: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

14

Timeline of Developments: 2016

Page 15: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

15

Timeline of Developments: 2016

Offline Mode

encryption

&v = 2, added

to POST request

Page 16: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

16

Timeline of Developments: 2016

Page 17: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

17

Timeline of Developments: 2016

Page 18: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

18

Timeline of Developments: 2016

Extension change:

.shit

.thor

URI change:

/linuxsucks.php

Page 19: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

19

Timeline of Developments: 2016

Extension change:

.aesir

.zzzzz

URI change:

/information.cgi

Page 20: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

20

Timeline of Developments: 2016

Page 21: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

21

Timeline of Developments: 2017

Locky takes a break

Page 22: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

22

Timeline of Developments: 2017

Extension change:

.loptr

URI change:

/checkupdate

Page 23: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

23

Timeline of Developments: 2017

AutoClose() Function start Powershell

Page 24: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

24

Timeline of Developments: 2017

URI change:

/imageload.cgi

Page 25: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

25

Timeline of Developments: 2017

Extension change:

.asasin

Loader Serves up

Locky or Trickbot

Use of DDE Exploit

Page 26: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

26

Technical Analysis

Page 27: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

27

Configuration

Affiliate ID DGA Seed

Delay(Sleep)

Drop svchost.exe: 01 Skip: 00

Autorun: 01 Skip: 00

Check RU: 01 Skip: 00

C&C offset

Page 28: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

28

Configuration

URI for its C&C • /main.php

• /submit.php

• /userinfo.php

• /access.cgi

• /linuxsucks.php

• /checkupdate

C&Cs

• /upload/_dispatch.php

• /php/upload.php

• /data/info.php

• /apache_handler.php

• /information.cgi

• /information.asp

• /imageload.cgi

Page 29: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

29

Configuration

Page 30: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

30

Configuration: Offline

Online mode

Offline mode Offline mode No DGA Seed No C&C offset

No C&Cs and URI

Page 31: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

31

Configuration: Offline

Offline mode

Embedded Public RSA key

Page 32: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

32

Configuration: Offline

Embedded Ransom Text

Embedded HTML Ransom Text

Page 33: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

33

Victim ID: Online

Locky creates a victim ID that needs to identify unique systems.

The victim ID is created from the following information:

• Volume GUID of the WindowsDirectory

• MD5 hash of the GUID value

e.g. victim_ID = 4DF383039AB03953

Page 34: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

34

Victim ID: Offline

The victim ID is created from the following information:

• GUID of the WindowsDirectory

• Default UI Language

• OS version

• Domain Controller

• Affiliate ID from the configuration

• Public key ID from the configuration

Encodes it using a hard coded 32 character value: “YBNDRFG8EJKMCPQX0T1UWISZA345H769”.

e.g. victim_ID = IZ8FDGTNEN85I7JZ

Page 35: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

35

C&C

Communication

Page 36: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

36

Communication Protocol: C&C

Connect to

Hardcoded IP

Start Http

POST

Request

Use DGA to

connect to

C&C

YES NO

Page 37: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

37

Communication Protocol: Data

Format: Key = value; Uses & as its delimiter

id=4DF383039AB03953&act=getkey&affid=5&lang=en&corp=0=&serv=0&os=Windows+XP&sp=3&x64=0&v=2

Victim ID

getkey

gettext

gethtml

stats

Affiliate ID

Language

0: not member or a domain

1: member of a domain

2: primary domain controller

0: not server

1: server

Operating System

Service Pack

Architecture

0: x86

1: x64

version

Page 38: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

38

Communication Protocol: Http request

Victim C&C

Page 39: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

39

File Encryption

Page 40: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

40

File Encryption: Targeted drives

• Drive_Removable

• Drive_Fixed

• Drive_Remote

• Drive_Ramdisk

Page 41: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

41

File Encryption: Targeted extensions

File extensions: .yuv, .qbx, .ndd, .exf, .cdr4, .vmsd, .dat, .indd, .pspimage, .obj, .ycbcra, .qbw, .mrw, .erf, .cdr3, .vhdx, .cmt, .iif,

.ps, .mlb, .xis, .qbr, .moneywell, .erbsql, .bpw, .vhd, .bin, .fpx, .pct, .md, .x3f, .qba, .mny, .eml, .bgt, .vbox,

.aiff, .fff, .pcd, .mbx, .x11, .py, .mmw, .dxg, .bdb, .stm, .xlk, .fdb, .m4v, .lit, .wpd, .psafe3, .mfw, .drf, .bay, .st7,

.wad, .dtd, .m, .laccdb, .tex, .plc, .mef, .dng, .bank, .rvt, .tlg, .design, .fxg, .kwm, .sxg, .plus_muhd, .mdc, .dgc,

.backupdb, .qcow, .st6, .ddd, .flac, .idx, .stx, .pdd, .lua, .des, .backup, .qed, .st4, .dcr, .eps, .html, .st8, .p7c,

.kpdx, .der, .back, .pif, .say, .dac, .dxb, .flf, .st5, .p7b, .kdc, .ddrw, .awg, .pdb, .sas7bdat, .cr2, .drw, .dxf, .srw,

.oth, .kdbx, .ddoc, .apj, .pab, .qbm, .cdx, .db3, .dwg, .srf, .orf, .kc2, .dcs, .ait, .ost, .qbb, .cdf, .cpi, .dds, .sr2,

.odm, .jpe, .dc2, .agdl, .ogg, .ptx, .blend, .cls, .css, .sqlite, .odf, .incpas, .db_journal, .ads, .nvram, .pfx, .bkp,

.cdr, .config, .sdf, .nyf, .iiq, .csl, .adb, .ndf, .pef, .al, .arw, .cfg, .sda, .nxl, .ibz, .csh, .acr, .m4p, .pat, .adp, .ai,

.cer, .sd0, .nx2, .ibank, .crw, .ach, .m2ts, .oil, .act, .aac, .asx, .s3db, .nwb, .hbk, .craw, .accdt, .log, .odc, .xlr,

.thm, .aspx, .rwz, .ns4, .gry, .cib, .accdr, .hpp, .nsh, .xlam, .srt, .aoi, .rwl, .ns3, .grey, .ce2, .accde, .hdd, .nsg,

.xla, .save, .accdb, .rdb, .ns2, .gray, .ce1, .ab4, .groups, .nsf, .wps, .safe, .7zip, .rat, .nrw, .fhd, .cdrw, .3pr,

.flvv, .nsd, .tga, .rm, .1cd, .raf, .nop, .fh, .cdr6, .3fr, .edb, .nd, .rw2, .pwm, .wab, .qby, .nk2, .ffd, .cdr5, .vmxf,

.dit, .mos, .r3d, .pages, .prf, .oab, .msg, .mapimail, .jnt, .dbx, .contact …

Page 42: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

42

File Encryption: Algorithm

Encryption used:

• Uses both RSA and AES algorithms

• The AES-128 key is randomly generated for each file

• The AES-128 key is used to encrypt the file and it’s filename

• After encryption, the AES-128 key will be encrypted by RSA-2048

Page 43: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

43

File Encryption: Filename

Format of filenames of encrypted files.

4DF383039AB03953D81660EB4CADC28D.locky

Victim ID File ID

Page 44: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

44

File Encryption: Filename

Format of filenames of encrypted files.

4DF383039AB03953D81660EB4CADC28D.locky

IZ8FDXJD-K685-W9X6-491BC1BE-644CD37731DF.asasin

Victim ID

Victim ID

File ID

File ID

Page 45: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

45

File Encryption: File layout

Encrypted AES Key

Encrypted File

Encryption

Page 46: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

46

File Encryption: File layout

Encrypted Data *Encryption used:

AES-128 Hardcoded Value

Victim ID Encrypted AES Key

*Encryption used: RSA-2048

Encrypted Filename *Encryption used:

AES-128

Page 47: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

47

HTML Ransom Note

Page 48: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

48

Decryptor Page

Page 49: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

49

Harvest Locky

Configuration

Page 50: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

50

Automate Configuration Extraction: Overview

NO

YES

YES NO

Page 51: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

51

Kill Chain

Page 52: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

52

Kill Chain: SPAM Campaign

• Microsoft Office

• LNK(.lnk)

• Powershell

• HTML(.hta, .chm)

• Archive(.rar, .zip)

• Script(.js, .jse, .vbs, .wsf)

• Portable Document Format(.pdf)

Email Download

URLs Payload

Page 53: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

53

SPAM

emails

Script

Downloader URL

.diablo6

.lukitus

Page 54: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

54

1st Wave

Monday

09/17/17

08:24 AM

2nd Wave

Monday

09/17/17

05:13 PM

Status of

invoice

A2173164-

48.7z /87thiuh3gfDGS

affilID: 3

URI: <yes>

C&C: <yes>

*online/offline

encryption

Message

from

km_c224e

20171809_6

0412473780.

7z

/DKndhFG72

affilID: 3

URI: <none>

C&C: <none>

*offline

encryption

Page 55: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

55

Interesting Observations

• Email subject (e.g. “Message from km_c224e”)

»Same spam email subject by Dridex and Jaff Ransomware

• Qtbot loader serves Trickbot and Locky

»Country codes: UK, IE, AU, GB, LU or BE -> Trickbot

• Locky ransomware files share the same download servers

with Sage ransomware

• Locky ransomware files share the same download servers

with Fake Globe ransomware

Page 56: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

56

Conclusion

Page 57: Smoking the Locky Ransomware Code · 1 November 16, 2017 By Rommel Joven & Floser Bacurio Jr Locky Strike: Smoking the Locky Ransomware Code

57

FortiGuard – Q&A

Thank you [email protected]

[email protected]

@fbacurio

@rommeljoven17