Warnhinweis APT29

Inhaltsverzeichnis

APT29 - Forensische Detailanalyse und technische Handlungsempfehlungen

Die russische Hackergruppe „APT29“, auch bekannt als „The Dukes“ oder „Cozy Bear“, ist eine klassifizierte fortgeschrittene Bedrohung, welcher einer Verbindung zum russischen Geheimdienst nachgesagt wird.

In unserem Blogbeitrag möchten wir auf die jüngsten Methoden, Techniken und Verfahren dieser Gruppe eingehen..

Einführung

Das National Cyber Security Centre (NCSC) des Vereinigten Königreichs und das Communications Security Establishment (CSE) Kanadas gehen davon aus, dass es sich bei APT29 (auch bekannt als “The Dukes” oder “Cozy Bear”) um eine Cyber-Spionagegruppe handelt, die mit ziemlicher Sicherheit zu den russischen Geheimdiensten gehört.

Die Nationale Sicherheitsbehörde der Vereinigten Staaten (NSA) stimmt dieser Zuschreibung und den in diesem Bericht gemachten Angaben zu.

Die Cybersecurity and Infrastructure Security Agency (DHS CISA) des US-Heimatschutzministeriums stimmt den technischen Details und den Ratschlägen zur Eindämmung der Gefahren in diesem Gutachten zu.

Die Gruppe setzt eine Vielzahl von Instrumenten und Techniken ein, um vorwiegend Ziele in den Bereichen Regierung, Diplomatie, Think-Tanks, Gesundheitsfürsorge und Energie zu erreichen, um nachrichtendienstliche Erkenntnisse zu gewinnen.

Im Laufe des Jahres 2020 hat APT29 verschiedene Organisationen, die an der Entwicklung von COVID-19-Impfstoffen in Kanada, den Vereinigten Staaten und dem Vereinigten Königreich beteiligt sind, ins Visier genommen, höchstwahrscheinlich mit der Absicht, Informationen und geistiges Eigentum im Zusammenhang mit der Entwicklung und Erprobung von COVID-19-Impfstoffen zu stehlen.

APT29 setzt benutzerdefinierte Malware namens “WellMess” und “WellMail” ein, um eine Reihe von Organisationen weltweit ins Visier zu nehmen. Dazu gehören auch die Organisationen, die sich mit der Entwicklung von COVID-19-Impfstoffen befassen. WellMess und WellMail wurden bisher nicht öffentlich mit APT29 in Verbindung gebracht.

Einzelheiten der Verfahrenstechnik

Vektoren der Erstinfektion

Die Gruppe APT29  verwendet häufig öffentlich zugängliche Exploits, um weit verbreitete Scans und Angriffe auf anfällige Systeme
durchzuführen, wahrscheinlich in dem Bemühen, Authentifizierungsreferenzen zu erhalten, welche weiteren Zugriff ermöglichen. Durch diese breit angelegte Ausrichtung erhält die Gruppe potenziell Zugang zu einer großen Anzahl von Systemen weltweit, von welchen viele vermutlich nicht von unmittelbarem nachrichtendienstlichem Wert sind. Die Gruppe kann einen Vorrat an gestohlenen Berechtigungsnachweisen aufbewahren, um auf diese Systeme zugreifen zu können, falls sie in Zukunft für ihre Anforderungen relevanter werden sollten.

Bei den jüngsten Angriffen auf die Forschung und Entwicklung von COVID-19-Impfstoffen führte die Gruppe grundlegende Schwachstellen-Scans gegen spezifische externe IP-Adressen durch, welche den Organisationen gehören. Anschließend setzte die Gruppe öffentliche Exploits gegen die identifizierten verwundbaren Dienste ein.

Die Gruppe war erfolgreich, als sie mit kürzlich veröffentlichten Exploits erste Erfolge erzielte. Beispiele hierfür sind unter anderem:

Die Gruppe ist höchstwahrscheinlich bestrebt, eine Vielzahl neuer Errungenschaften uneingeschränkt zu nutzen, wenn sie veröffentlicht wird. Weitere Informationen über diese Exploits finden sich in früheren NCSC-Beratungen über Citrix– und VPN-Schwachstellen [1,2].

Die Gruppe benutzt außerdem Spear-Phishing, um Authentifizierungsdaten für die im Internet zugänglichen Anmeldeseiten von Zielorganisationen zu erhalten.

Persistenter Zugriff

Wenn die Gruppe Zugang zu einem System erhält, lässt sie mit hoher Wahrscheinlichkeit weitere Tools zurück und/oder versucht, legitime Berechtigungen für die kompromittierten Systeme zu erhalten, um einen dauerhaften Zugang aufrechtzuerhalten. Der Angreifer wird bei der Verwendung der gestohlenen Zugangsdaten mit hoher Wahrscheinlichkeit Anonymisierungsdienste in Anspruch nehmen.

WellMess-Malware

In einigen Fällen setzt APT29 auch benutzerdefinierte Malware namens WellMess oder WellMail ein, um weitere Eingriffe in das System des Opfers durchzuführen.

WellMess ist Malware, die entweder in Golang oder .NET geschrieben wurde und seit mindestens 2018 in Gebrauch ist. Über WellMess wurde erstmals im Juli 2018 von JPCERT– und LAC-Forschern berichtet[4][5]. Es ist nach einem der Funktionsnamen in der Malware benannt – ‘wellmess’. WellMess ist eine leichtgewichtige Malware, die darauf ausgelegt ist, beliebige Shell-Befehle auszuführen und Dateien hoch- und herunterzuladen. Die Malware unterstützt HTTP-, TLS- und DNS-Kommunikationsmethoden.

Indikatoren für die Kompromittierung (IOCs) von WellMess sind im Anhang verfügbar.

WellMail-Malware

WellMail ist ein einfaches Tool zum Ausführen von Befehlen oder Skripten, deren Ergebnisse an einen hartkodierten Command and Control (C2)-Server gesendet werden. Das NCSC hat diese Malware aufgrund der Dateipfade, die das Wort “Mail” enthalten, und der Verwendung des in der analysierten Probe vorhandenen Server-Ports 25 als “WellMail” bezeichnet. Ähnlich wie WellMess verwendet WellMail hartkodierte Client- und Zertifizierungsautoritäts-TLS-Zertifikate zur Kommunikation mit C2-Servern. Die Binärdatei ist ein in Golang geschriebenes ELF-Dienstprogramm, das einen Befehl oder ein Skript empfängt, welches über die Linux-Shell ausgeführt wird.Soweit uns bekannt ist, wurde WellMail bisher nicht öffentlich namentlich aufgeführt.

IOCs für WellMail sind im Anhang verfügbar.

Verwendung von Zertifikaten

Die WellMess- und WellMail-Beispiele enthielten TLS-Zertifikate mit dem fest codierten SubjectKeyIdentifier (SKI) ‘0102030406’ und verwendeten die Subjects ‘C=Tunis, O=IT’ bzw. ‘O=GMO GlobalSign, Inc’. Diese Zertifikate können zur Identifizierung weiterer Malware-Proben und der Infrastruktur verwendet werden. Server mit diesem GlobalSign Zertifikats-Betreff können für andere Funktionen zusätzlich zur WellMail Malware-Kommunikation verwendet werden.

SoreFang-Schadsoftware

Malware, vom NCSC als “SoreFang” bezeichnet, ist ein Downloadprogramm der ersten Stufe, welches HTTP verwendet, um Opferinformationen zu exfiltrieren und Malware der zweiten Stufe herunterzuladen. Die vom NCSC analysierte Probe enthält die gleiche Infrastruktur wie eine WellMess-Probe (103.216.221[.]19).

Es ist wahrscheinlich, dass SoreFang auf SangFor-Geräte abzielt. Aus Berichten der Industrie geht hervor, dass andere Akteure, darunter angeblich auch “DarkHotel”, ebenfalls SangFor-Geräte ins Visier genommen haben. Daher beziehen sich nicht alle Aktivitäten zur Ausnutzung von SangFor auf das Targeting durch APT29.

Schlussfolgerung

APT29 wird wahrscheinlich auch weiterhin auf Organisationen abzielen, die an der Forschung und Entwicklung von COVID-19-Impfstoffen beteiligt sind, da sie versuchen, zusätzliche nachrichtendienstliche Fragen im Zusammenhang mit der Pandemie zu beantworten.

Es wird den Organisationen dringend empfohlen, die im Anhang aufgeführten Regeln und IOCs zu verwenden, um die in dieser Publikation beschriebenen Aktivitäten aufzudecken.

Du hast einen Sicherheitsvorfall?
Vertraue bei Auffälligkeiten unseren zertifizierten IT Forensikern.
Jetzt kontaktieren

Anhang

Indikatoren für Kompromiss- und Erkennungsregeln

WellMess IOCs

00654dd07721e7551641f90

cba832e98c0acb030e2848

e5efc0e1752c067ec07

0322c4c2d511f73ab55bf3f

43b1b0f152188d7146cc67ff

497ad275d9dd1c20f

03e9adae529155961f1f182

12ff70181bde0e3da3d7f2

2961a6e2b1c9da2dd2e

0b8e6a11adaa3df120ec158

46bb966d674724b6b92e

ae34d63b665e0698e0193

14e9b5e214572cb13ff8772

7d680633f5ee238259043

357c94302654c546cad2

1fed2e1b077af08e73fb5ec

ffd2e5169d5289a825dcaf

2d8742bb8030e487641

21129ad17800b11cdb369

06ba7f6105e3bd1cf44575

f77df58ba91640ba0cab9

2285a264ffab59ab5a1eb

4e2b9bcab9baf26750b6c

551ee3094af56a4442ac41

2daba469f50cd1b77481e

605aeae0f28bf14cedfcd8

e4369193e5e04c523bc38

49bfff6b91ee71bbf8fd94

829391a36b844ffba104c

145e01c92732ada52c8ba

4c8671411da91eb5967f40

8c2a6ff6baf25ff7c40c65

ff45ee33b352a711bf9c

5ca4a9f6553fea64ad2c7

24bf71d0fac2b372f9e7c

e2200814c98aac64717

2fb

797159c202ca41356bee1

8c5303d37e9d2a43ca43

d0ce02e1fd9e7045b925

d11

7c39841ba409bce4c2c

35437ecf043f2291098

4325c70b9530edf15d8

26147ee

84b846a42d9443152

0d3d2d14262f3d3a5d

96762e56b0ae471b85

3d1603ca403

8749c1495af4fd73ccfc

84b32f56f5e78549d8

1feefb0c1d1c3475a74

345f6a8

92a856a2216e107496

ee086e1c8cfe14e1514

5e7a247539815fd37e

5a18b84d9

93e9383ae8ad2371d

457fc4c1035157d887

a84bbfe66fbbb3769

c5637de59c75

953b5fc9977e2d50f3

f72c6ce85e8942893

7117830c0ed67d468

e2d93aa7ec9a

a03a71765b1b0ea7de4

fbcb557dcfa995ff906

8e92db9b2dada9dd0

841203145

a117b2a904c24df625

81500176183fbc282a

740e4f11976cdfc01fe

664a02292

a3ca47e1083b93ea90

ace1ca30d9ef71163e8

a95ee00500cbd3fd0

21da0c18af

b75a5be703d9ba3721

d046db80f62886e10

009b455fa5cdfd73ce

78f9f53ec5a

bec1981e422c1e01c14

511d384a33c9bcc66

456c1274bbbac073d

a825a3f537d

c1a0b73bad4ca30a5

c18db56c1cba4f5db

75f3d53daf62ddc59

8aae2933345f3

d7e7182f49844094

5fc8351f0e82ad2d5

844530ebdba39051

d2205b730400381

dd3da0c596fd6999

00cdd103f097fe661

4ac69787edfa6fa8

4a8f471ecb836bb

e329607379a0148

3fc914a47c0062d

5a3a8d8d65f777fb

ad2c5a841a90a0af09

e3d6057b4c2a7d8

fa7250f0781ea6da

b4a977551c13fe2f

0a86f3519b2aaee7a

f3af394d9c3f68dff

50b467340ca59a1

1a14a3d56361e6c

ffd1cf2312a7028ad

f622d031207d22c

633ccec187a24c5

0980243cb4717d2

1fad6588dacbf9c29e9

fd3969d32398bbe

3709e9da5f83269

35dde664bbc3675

3bd41a0b111712c0950

103.103.128[.]221

103.13.240[.]46

103.205.8[.]72

103.216.221[.]19

103.253.41[.]102

103.253.41[.]68

103.253.41[.]82

103.253.41[.]90

103.73.188[.]101

111.90.146[.]143

111.90.150[.]176

119.160.234[.]163

119.160.234[.]194

119.81.173[.]130

119.81.178[.]105

120.53.12[.]132

122.114.197[.]185

122.114.226[.]172

141.255.164[.]29

141.98.212[.]55

145.249.107[.]73

146.0.76[.]37

149.202.12[.]210

169.239.128[.]110

176.119.29[.]37

178.211.39[.]6

185.120.77[.]166

185.145.128[.]35

185.99.133[.]112

191.101.180[.]78

192.48.88[.]107

193.182.144[.]105

202.59.9[.]59

209.58.186[.]196

209.58.186[.]197

209.58.186[.]240

220.158.216[.]130

27.102.130[.]115

31.170.107[.]186

31.7.63[.]141

45.120.156[.]69

45.123.190[.]167

45.123.190[.]168

45.152.84[.]57

46.19.143[.]69

5.199.174[.]164

66.70.247[.]215

79.141.168[.]109

81.17.17[.]213

85.93.2[.]116

rule wellmess_dotne

t_unique_strings {

meta:

description = “Rule t

o detect WellMess

.NET samples based

on unique strings

and function/variable

names”

author = “NCSC”

hash = “2285a264ffab59

ab5a1eb4e2b9bca

b9baf26750b6c55

1ee3094af56a4442ac41”

strings:

$s1 = “MaxPostSize”

wide

$s2 = “HealthInterval” wide

$s3 = “Hello from Proxy” wide

$s4 = “Start bot:” wide

$s5 = “Choise” ascii wide

$s7 = “FromNormalToBase64” ascii

$s8 = “FromBase64ToNormal” ascii

$s9 = “ConvBytesToWords” ascii

$s10 = “WellMess” ascii

$s11 = “chunksM” ascii

condition:

uint16(0) == 0x5a4d and uint16(uint16(0x3c)) == 0x4550 and 3 of them

}

rule wellmess_

botlib_

function_names

{

meta:

description = “Rule to

detect WellMess

Golang samples based

on the function names

used by the actor”

author = “NCSC”

hash = “8749c1495af4fd73

ccfc84b32f56f5e7

8549d81feefb0c1d

1c3475a74345f6a8”

strings:

$s1 = “botlib.wellMess”

ascii wide

$s2 = “botlib.saveFile”

ascii wide

$s3 = “botlib.reply”

ascii wide

$s4 = “botlib.init”

ascii wide

$s5 = “botlib.generate

RandomString” ascii wide

$s6 = “botlib.encrypt” ascii wide

$s7 = “botlib.

deleteFile” ascii wide

$s8 = “botlib.convert

FromString” ascii wide

$s9 = “botlib.chunksM”

ascii wide

$s10 = “botlib.Work” ascii wide

$s11 = “botlib.UnpackB”

ascii wide

$s12 = “botlib.Unpack” ascii wide

$s13 = “botlib.UDFile” ascii wide

$s14 = “botlib.Split” ascii wide

$s15 = “botlib.Service” ascii wide

$s16 = “botlib.SendMessage” ascii wide

$s17 = “botlib.Send.func1” ascii wide

$s18 = “botlib.Send”

ascii wide

$s19 = “botlib.ReceiveMessage”

ascii wide

$s20 = “botlib.RandStringBytes”

ascii wide

$s21 = “botlib.RandInt”

ascii wide

$s22 = “botlib.Post”

ascii wide

$s23 = “botlib.Parse” ascii wide

$s24 = “botlib.Pad”

ascii wide

$s25 = “botlib.Pack”

ascii wide

$s26 = “botlib.New”

ascii wide

$s27 = “botlib.KeySizeError.

Error” ascii wide

$s28 = “botlib.Key” a

scii wide

$s29 = “botlib.Join”

ascii wide

$s30 = “botlib.GetRandom

Bytes” ascii wide

$s31 = “botlib.GenerateSymmKey” ascii wide

$s32 = “botlib.FromNormalTo

Base64” ascii wide

$s33 = “botlib.EncryptText” ascii wide

$s34 = “botlib.Download” ascii wide

$s35 = “botlib.Decipher” ascii wide

$s36 = “botlib.Command” ascii wide

$s37 = “botlib.Cipher” ascii wide

$s38 = “botlib.CalculateMD5Hash” ascii wide

$s39 = “botlib.Base64ToNormal” ascii wide

$s40 = “botlib.AES_Encrypt” ascii wide

$s41 = “botlib.AES_Decrypt” ascii wide

$s42 = “botlib.(*rc6cipher).Encrypt” ascii wide

$s43 = “botlib.(*rc6cipher).Decrypt” ascii wide

$s44 = “botlib.(*rc6cipher).BlockSize” ascii wide

$s45 = “botlib.(*KeySizeError).Error” ascii wide

$s46 = “botlib.DownloadDNS” ascii wide

$s47 = “botlib.JoinDnsChunks” ascii wide

$s48 = “botlib.SendDNS” ascii wide

$s49 = “botlib.CreateDNSName” ascii wide

condition:

((uint16(0) == 0x5a4d and uint16(uint16(0x3c)) == 0x4550) or uint32(0) == 0x464c457f) and any of them

}

rule wellmess_

certificate_base64_

snippets {

meta:

description = “Rule

for detection of WellMess

based on base64

snippets of certificates used”

author = “NCSC”

hash = “8749c1495af4fd7

3ccfc84b32f56f5e7

8549d81feefb0c1d1c3

475a74345f6a8”

strings:

$a1 = “BgNVHQ4E

BwQFAQIDBA”

$a2 = “YDVR0OBA

cEBQECAwQG”

$a3 = “GA1UdDgQH

BAUBAgMEB”

$b1 = “BgNVBAYTBVR1bm

lzMQswCQYDVQQKEw

JJVD”

$b2 =

“YDVQQGEwVUdW5

pczELMAkGA1UEC

hMCSVQx”

$b3 = “GA1UEBhMFVH

VuaXMxCzAJBgN

VBAoTAklUM”

condition:

((uint16(0) == 0x5a4d and uint16(uint16(0x3c)) == 0x4550) or uint32(0) == 0x464c457f) and any of ($a*) and any of ($b*)

}

rule wellmess_

regex_used_for_parsing_

beacons {

meta:

description = “Detects

WellMess Golang and

.NET samples based on

the regex they used to

parse commands and

beacon information”

author = “NCSC”

hash = “8749c1495af4fd73c

cfc84b32f56f5e7854

9d81feefb0c1d1c347

5a74345f6a8”

strings:

$a = “fileName:(?.*?)\\sargs:(?.*)\\snotwait:(?.*)”

ascii wide

$b = “<;(?[^;]*?);>(?[^<]*?)<;[^;]*?;>” ascii wide

condition:

((uint16(0) == 0x5a4d and uint16(uint16(0x3c)) == 0x4550) or uint32(0) == 0x464c457f) and any of them

}

WellMail IOCs

83014ab5b3f63b0253cd

ab6d715f5988ac901457

0fa4ab2b267c7cf9ba23

7d18 (UPX)

0c5ad1e8fe43583e2792

01cdb1046aea742bae5

9685e6da24e963a41d

f987494 (Unpacked)

103.216.221.19

rule wellmail_unique_

strings {

meta: description = “Rule

for detection of WellMail

based on unique strings

contained in the binary”

author = “NCSC”

hash = “0c5ad1e8fe4358

3e279201cdb1046aea742ba

e59685e6da24e963a4

1df987494”

strings:

$a = “C:\\Server\\Mail\\

App_Data\\Temp\\

agent.sh\\src”

$b = “C:/Server/Mail/

App_Data/Temp/

agent.sh/src/main.go”

$c = “HgQdbx4qRNv”

$d = “042a51567eea19d5

aca71050b4535d33

d2ed43ba”

$e = “main.zipit”

$f = “@[^\\s]+?\\s(?P.*?)\\s”

condition:

uint32(0) == 0x464C457F and 3 of them

}

rule wellmail_certificate_

base64_snippets {

meta: description = “

Rule for detection

of WellMail based on

base64 snippets of

certificates used”

author = “NCSC”

hash = “0c5ad1e8fe43583

e279201cdb1046ae

a742bae59685e6d

a24e963a41df987494”

strings:

$a1 = “BgNVHQ4EB

wQFAQIDBA”

$a2 = “YDVR0OBAc

EBQECAwQG”

$a3 = “GA1UdDgQ

HBAUBAgMEB”

$b1 = “BgNVBAoTE0dNTy

BHbG9iYWxTaWd

uLCBJbm”

$b2 = “YDVQQKExNHTU

8gR2xvYmFsU2lnbi

wgSW5j”

$b3 = “GA1UEChMTR01

PIEdsb2JhbFNpZ

24sIEluY”

condition:

uint32(0) == 0x464C457F and any of ($a*) and any of ($b*)

}

SoreFang IOCs

58d8e65976b53b7764

5c248bfa18c3b87a6ec

fb02f306fe6ba4944db

96a5ede2

65495d173e3056256

96051944a36a031ea9

4bb3a4f13034d8be74

0982bc4ab75

a4b790ddffb3d2e669

1dcacae08fb0bfa1ae

56b6c73d70688b097

ffa831af064

103.216.221[.]19

rule sorefang_directory_enumeration_output_strings {

meta:

description = “Rule to detect SoreFang based on formatted string output for directory enumeration”

author = “NCSC”

hash = “58d8e65976b53b77645c248bfa18c3b87a6ecfb02f306fe6ba4944db96a5ede2”

strings:

$ = “———-All usres directory———-“

$ = “———-Desktop directory———-“

$ = “———-Documents directory———-“

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and any of them

}

rule sorefang_encryption_key_2b62 {

meta:

description = “Rule to detect SoreFang based on hardcoded encryption key”

author = “NCSC”

hash = “58d8e65976b53b77645c248bfa18c3b87a6ecfb02f306fe6ba4944db96a5ede2”

strings:

$ = “2b6233eb3e872ff78988f4a8f3f6a3ba”

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and any of them

}

rule sorefang_encryption_key_schedule {

meta:

description = “Rule to detect SoreFang based on the key schedule used for encryption”

author = “NCSC”

hash = “58d8e65976b53b77645c248bfa18c3b87a6ecfb02f306fe6ba4944db96a5ede2”

strings:

$ = {C7 05 ?? ?? ?? ?? 63 51 E1 B7 B8 BC D1 3B 01 8B 48 FC 81 E9 47 86 C8 61 89 08 83 C0 04 3D ?? ?? ?? ?? 7E EB 33 D2 33 C9 B8 2C 00 00 00 89 55 D4 33 F6 89 4D D8 33 DB 3B F8 0F 4F C7 8D 04 40 89 45 D0 83 F8 01 7C 4F 0F 1F 80 00 00 00 00}

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and any of them

}

rule sorefang_command_elem_cookie_ga_boundary_string {

meta:

description = “Rule to detect SoreFang based on scheduled task element and Cookie header/boundary strings”

author = “NCSC”

hash = “58d8e65976b53b77645c248bfa18c3b87a6ecfb02f306fe6ba4944db96a5ede2”

strings:

$ = “<Command>” wide

$ = “Cookie:_ga=”

$ = “——974767299852498929531610575”

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and 2 of them

}

rule sorefang_encryption_round_function {

meta:

description = “Rule to detect SoreFang based on the encryption round function”

author = “NCSC”

hash = “58d8e65976b53b77645c248bfa18c3b87a6ecfb02f306fe6ba4944db96a5ede2”

strings:

$ = {8A E9 8A FB 8A 5D 0F 02 C9 88 45 0F FE C1 0F BE C5 88 6D F3 8D 14 45 01 00 00 00 0F AF D0 0F BE C5 0F BE C9 0F AF C8 C1 FA 1B C0 E1 05 0A D1 8B 4D EC 0F BE C1 89 55 E4 8D 14 45 01 00 00 00 0F AF D0 8B C1}

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and any of them

}

rule sorefang_add_random_commas_spaces {

meta:

description = “Rule to detect SoreFang based on function that adds commas and spaces”

author = “NCSC”

hash = “58d8e65976b53b77645c248bfa18c3b87a6ecfb02f306fe6ba4944db96a5ede2”

strings:

$ = {E8 ?? ?? ?? ?? B9 06 00 00 00 99 F7 F9 8B CE 83 FA 04 7E 09 6A 02 68 ?? ?? ?? ?? EB 07 6A 01 68 ?? ?? ?? ??}

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and any of them

}

rule sorefang_modify_alphabet_custom_encode {

meta:

description = “Rule to detect SoreFang based on arguments passed into custom encoding algorithm function”

author = “NCSC”

hash = “58d8e65976b53b77645c248bfa18c3b87a6ecfb02f306fe6ba4944db96a5ede2”

strings:

$ = {33 C0 8B CE 6A 36 6A 71 66 89 46 60 88 46 62 89 46 68 66 89 46 64}

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and any of them

}

$ = {E8 ?? ?? ?? ?? B9 06 00 00 00 99 F7 F9 8B CE 83 FA 04 7E 09 6A 02 68 ?? ?? ?? ?? EB 07 6A 01 68 ?? ?? ?? ??}

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and any of them

}

rule sorefang_custom_encode_decode {

meta:

description = “Rule to detect SoreFang based on the custom encoding/decoding algorithm function”

author = “NCSC”

hash = “58d8e65976b53b77645c248bfa18c3b87a6ecfb02f306fe6ba4944db96a5ede2”

strings:

$ = {55 8B EC 8B D1 53 56 8B 75 08 8B DE 80 42 62 FA 8A 4A 62 66 D3 EB 57 3A 5A 5C 74 0F}

$ = {3A 5A 5D 74 0A 3A 5A 58 74 05 3A 5A 59 75 05 FE C1 88 4A 62 8A 4A 62 B8 01 00 00 00}

$ = {8A 46 62 84 C0 74 3E 3C 06 73 12 0F B6 C0 B9 06 00 00 00 2B C8 C6 46 62 06 66 D3 66 60 0F B7 4E 60}

$ = {80 3C 38 0D 0F 84 93 01 00 00 C6 42 62 06 8B 56 14 83 FA 10 72 04 8B 06}

$ = {0F BE 0C 38 8B 45 EC 0F B6 40 5B 3B C8 75 07 8B 55 EC B3 3E}

$ = {0F BE 0C 38 8B 45 EC 0F B6 40 5E 3B C8 75 0B 8B 55 EC D0 EB C6 42 62 05}

$ = {8B 55 EC 0F BE 04 38 0F B6 DB 0F B6 4A 5F 3B C1 B8 3F 00 00 00 0F 44 D8}

$ = {8A 4A 62 66 8B 52 60 66 D3 E2 0F B6 C3 66 0B D0 8B 45 EC 66 89 50 60 8A 45 F3 02 C1 88 45 F3 3C 08 72 2E 04 F8 8A C8 88 45 F3 66 D3 EA 8B 4D 08 0F B6 C2 50}

$ = {3A 5A 5C 74 0F 3A 5A 5D 74 0A 3A 5A 58 74 05 3A 5A 59 75 05 FE C1 88 4A 62}

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and any of them

}

rule sorefang_remove_chars_comma_space_dot {

meta: description = “Rule to detect SoreFang based on function that removes commas, spaces and dots”

author = “NCSC”

hash = “58d8e65976b53b77645c248bfa18c3b87a6ecfb02f306fe6ba4944db96a5ede2”

strings:

$ = {8A 18 80 FB 2C 74 03 88 19 41 42 40 3B D6 75 F0 8B 5D 08}

$ = {8A 18 80 FB 2E 74 03 88 19 41 42 40 3B D6 75 F0 8B 5D 08}

$ = {8A 18 80 FB 20 74 03 88 19 41 42 40 3B D6 75 F0 8B 5D 08}

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and all of them

}

rule sorefang_disk_enumeration_strings {

meta:

description = “Rule to detect SoreFang based on disk enumeration strings”

author = “NCSC”

hash = “a4b790ddffb3d2e6691dcacae08fb0bfa1ae56b6c73d70688b097ffa831af064” strings:

$ = “\x0D\x0AFree on disk: “

$ = “Total disk: “

$ = “Error in GetDiskFreeSpaceEx\x0D\x0A”

$ = “\x0D\x0AVolume label: “

$ = “Serial number: “

$ = “File system: “

$ = “Error in GetVolumeInformation\x0D\x0A”

$ = “I can not het information about this disk\x0D\x0A”

condition:

(uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and all of them

}

Eindämmung

Bei der Verteidigung gegen die in diesem Bericht beschriebenen Angriffe wird eine Reihe von Abhilfemaßnahmen von Nutzen sein:

Du hast einen Sicherheitsvorfall?
Vertraue bei Auffälligkeiten unseren zertifizierten IT Forensikern.
Jetzt kontaktieren