PHOREAL-Malware zielt auf den südostasiatischen Finanzsektor ab

Elastic Security hat die PHOREAL-Malware entdeckt, die Finanzorganisationen in Südostasien, insbesondere im vietnamesischen Finanzsektor, ins Visier nimmt.

17 Minuten LesezeitKampagnen
PHOREAL-Malware zielt auf den südostasiatischen Finanzsektor ab

Präambel

Elastic Security hat eine laufende Kampagne identifiziert, die auf ein vietnamesisches Finanzdienstleistungsinstitut mit der PHOREAL/RIZZO-Hintertür abzielt. Obwohl diese Malware schon seit einiger Zeit im Einsatz ist, ist dies das erste Mal, dass wir beobachten, dass sie als Technik zur Umgehung der Verteidigung und zum Schutz von Kampagnen in den Speicher geladen wird. Nach der Analyse unserer eigenen Beobachtungen und zuvor gemeldeten Informationen verfolgen wir diese Aktivitätsgruppe (Malware + Technik + Viktimologie) als REF4322.

Worin besteht die Bedrohung?

PHOREAL/RIZZO ist eine Hintertür, die eine anfängliche Opfercharakterisierung und anschließende Post-Exploitation-Operationen ermöglicht, um die Vertraulichkeit der Unternehmensdaten zu gefährden. In anderen Untersuchungen wurde berichtet, dass es ausschließlich von APT32 (auch bekannt als SeaLotus, OceanLotus, APT-C-00, Gruppe G0050) verwendet wird.

Was sind die Auswirkungen?

APT32 richtet sich hauptsächlich an Opfer mit politischen oder wirtschaftlichen Interessen in Südostasien, insbesondere in Vietnam.

Was unternimmt Elastic dagegen?

Elastic Security hat detailliert beschrieben, wie eine dieser Bedrohungswarnungen selektiert, Observables für die Endpunkt- und Netzwerkfilterung extrahiert und eine neue Malware-Signatur zur Identifizierung und Abwehr der Bedrohung in der gesamten Flotte der eingesetzten Elastic Agents erstellt wird.

Details zur Untersuchung

Bei der Durchführung von Bedrohungserkennungs- und -überwachungsvorgängen identifizierten die Forscher von Elastic Security einen Cluster von shellcode_thread Windows-Speicherschutzwarnungen, die von einem Elastic Agent-Endpunktsensor generiert wurden. Diese speziellen Warnungen waren interessant, weil sie alle innerhalb desselben Clusters auftraten und ungewöhnlicherweise auf den control.exe Prozess abzielten. Der Windows control.exe-Prozess verarbeitet die Ausführung von Systemsteuerungselementen, bei denen es sich um Dienstprogramme handelt, mit denen Benutzer Computereinstellungen anzeigen und anpassen können.

Wenn wir Fehlalarme für den shellcode_thread Schutz beobachten, wird dies im Allgemeinen von einer breiten Benutzerbasis identifiziert und in vielen Fällen auf verschiedene Anti-Cheat- oder DRM-Mechanismen (Digital Rights Management) in Spielen zurückgeführt. In diesem Fall waren ein einzelner Cluster und ein von Microsoft signierter Zielprozess untypisch und eine weitere Untersuchung wert.

Weitere Informationen zu den Speicherschutzmaßnahmen von Elastic Security finden Sie HIER und zu In-Memory-Angriffen HIER.

Da unser Interesse an den Ausreißermerkmalen der Warnungen geweckt wurde, haben wir weitere Untersuchungen durchgeführt, um die Bedrohung zu validieren und zu charakterisieren:

Der Zielprozess ist eine signierte Windows-Binärdatei

...
"process": {
     "args": [
       "control.exe",
       "Firewall.cpl",
       "{2D48D219-C306-4349-AE1F-09744DFFB5B9}"
     ],
     "Ext": {
       "code_signature": [
         {
           "trusted": true,
           "subject_name": "Microsoft Windows",
           "exists": true,
           "status": "trusted"
         }
       ],
       "dll": [
...

Nicht signierte geladene .dll

...
   "Ext": {
     "mapped_address": 1945501696,
     "mapped_size": 21135360
   },
   "path": "C:\\Windows\\SysWOW64\\tscon32.dll",
   "code_signature": [
     {
       "exists": false
     }
   ],
   "name": "tscon32.dll",
   "hash": {
     "sha1": "007970b7a42852b55379ef4cffa4475865c69d48",
     "sha256": "ec5d5e18804e5d8118c459f5b6f3ca96047d629a50d1a0571dee0ac8d5a4ce33",
     "md5": "2b6da20e4fc1af2c5dd5c6f6191936d1"
   }
 },
...

Starten des Moduls aus dem Alarmierungsthread

...
 "pe": {
   "original_file_name": "CONTROL.EXE"
 },
 "name": "control.exe",
 "pid": 5284,
 "thread": {
   "Ext": {
     "start_address_module": "C:\\Windows\\SysWOW64\\tscon32.dll",
...

Benachrichtigung von Metadaten des Speicherbereichs

...
"memory_region": {`
   "region_size": 73728,
   "region_protection": "RWX",
   "allocation_base": 81395712,
   "bytes_allocation_offset": 0,
   "allocation_type": "PRIVATE",
   "memory_pe_detected": true,
   "region_state": "COMMIT",
   "strings": [
     "QSSSSSSh ",
     ...
     "bad cast",
     "Local\\{5FBC3F53-A76D-4248-969A-31740CBC8AD6}",
     "Netapi32.dll",
     "NetWkstaGetInfo",
     "NetApiBufferFree",
     "\\\\.\\pipe\\{A06F176F-79F1-473E-AF44-9763E3CB34E5}",
     "list<T> too long",
     "{FD5F8447-657A-45C1-894B-D533926C9B66}.dll",
     "DllEntry",
     ...
     ".?AVbad_alloc@std@@",
     "C:\\Windows\\syswow64\\control.exe",
     ":z:zzzzzz7",
     ...
     "InternalName",
     "mobsync.exe",
     "LegalCopyright",
...

Gewindedaten für das Pivotieren

...
"thread": {
 "Ext": {
   "start_address_bytes": "8bff558bece8e6430000e8db43000050e8bb43000085c0751fff7508e8c94300",
   ...
   "start_address_bytes_disasm": "mov edi, edi\npush ebp\nmov ebp, esp\ncall 0x000043f0\ncall 0x000043ea\npush eax\ncall 0x000043d0\ntest eax, eax\njnz 0x00000038\npush dword ptr [ebp+0x08]"
 },
...

Anhand der Beispielwarnung identifizieren wir zunächst die start_address_module d. h. die DLL/das Modul, in dem der Thread begonnen hat. C:\Windows\SysWOW64\tscon32.dll ist die start_address_module für den Thread, bei dem wir eine Warnung ausgelöst haben. Es ist auch die einzige nicht signierte DLL, die geladen wird, also ein großartiger Ort, um unsere Bemühungen zu konzentrieren. Bei der Überprüfung des Hash-Werts in VirusTotal, um zuvor offengelegte Informationen über die Probe zu identifizieren, wurden keine Ergebnisse angezeigt.

Wir haben uns die start_address_bytes angesehen, bei denen es sich um die ersten 32 Bytes unseres Alarmierungs-Threads handelt. Wir können den Wert des start_address_bytes (8bff558bece8e6430000e8db43000050e8bb43000085c0751fff7508e8c94300) verwenden, um nach Pivots in VirusTotal zu suchen, indem wir den Inhalt abfragen: {8bff558bec56e83f3e0000e8343e000050e8143e000085c0752a8b750856e821}. Wir haben relativ wenige Ergebnisse identifiziert, aber sie enthielten den folgenden Eintrag, der erstmals im Juli 2021 eingereicht wurde.

Bei der Untersuchung der Ergebnisse von VirusTotal konnten wir feststellen, dass der Bedrohungsforscher Felix Bilstein (@fxb_b) eine Crowdsourcing-YARA-Regel verfasst hat, die dies als PHOREAL-Hintertür identifiziert. Auf der Registerkarte INHALT können wir einige der Zeichenfolgen aus unserer Warnung mit denen vergleichen, die zuvor an VirusTotal gemeldet wurden.

Unter Verwendung der eindeutigen Zeichenfolgen, die wir oben identifiziert haben, und der start_address_bytes können wir eine YARA-Signatur erstellen, indem wir die eindeutigen Zeichenfolgen ($a) und die start_address_bytes ($b) in Hexadezimalwerte konvertieren, wie unten gezeigt.

Konvertierte YARA-Strings

strings:
          \\  "\\.\pipe\{A06F176F-79F1-473E-AF44-9763E3CB34E5}"  ascii wide
    $a1 = { 5C 00 5C 00 2E 00 5C 00 70 00 69 00 70 00 65 00 5C 00 7B 00 41 00
            30 00 36 00 46 00 31 00 37 00 36 00 46 00 2D 00 37 00 39 00 46 00
            31 00 2D 00 34 00 37 00 33 00 45 00 2D 00 41 00 46 00 34 00 34 00
            2D 00 39 00 37 00 36 00 33 00 45 00 33 00 43 00 42 00 33 00 34 00
            45 00 35 00 7D 00 }

          \\  "Local\{5FBC3F53-A76D-4248-969A-31740CBC8AD6}"  ascii wide
    $a2 = { 4C 00 6F 00 63 00 61 00 6C 00 5C 00 7B 00 35 00 46 00 42 00 43 00
            33 00 46 00 35 00 33 00 2D 00 41 00 37 00 36 00 44 00 2D 00 34 00
            32 00 34 00 38 00 2D 00 39 00 36 00 39 00 41 00 2D 00 33 00 31 00
            37 00 34 00 30 00 43 00 42 00 43 00 38 00 41 00 44 00 36 00 7D 00 }

          \\  "{FD5F8447-657A-45C1-894B-D533926C9B66}.dll"  ascii
    $a3 = { 7B 46 44 35 46 38 34 34 37 2D 36 35 37 41 2D 34 35 43 31 2D 38 39
            34 42 2D 44 35 33 33 39 32 36 43 39 42 36 36 7D 2E 64 6C 6C }

          \\  PHOREAL start_address_bytes sequence
          \\  mov edi, edi; push ebp; mov ebp, esp; call 0x000043f0;
          \\  call 0x000043ea; push eax; call 0x000043d0; test eax, eax;
          \\  jnz 0x00000038; push dword ptr [ebp+0x08]
    $str_addr = { 8B FF 55 8B EC 56 E8 3F 3E 00 00 E8 34 3E 00 00 50 E8 14 3E
            00 00 85 C0 75 2A 8B 75 08 56 E8 21 }
condition:
    2 of them

Wenn diese Regel auf dem elastischen Agent bereitgestellt wird, identifiziert sie PHOREAL für Kunden und die Backstop-Prävention, die bereits durch den shellcode_thread Speicherschutz bereitgestellt wird (in Kundenumgebungen mit aktiviertem Speicherschutz). In unserem Fall ermöglichte die Bereitstellung dieser Regel auch das Sammeln des bösartigen Threads mithilfe desselben Mechanismus, der in unserem Artikel zum Sammeln von Cobalt Strike Beacons beschrieben wird.

Kurz nachdem das neue YARA-Artefakt bereitgestellt wurde, hatten wir eine neue malware_signature Warnung in der Hand, mit dem bösartigen Thread, der aus dem Speicher erfasst wurde. Die manuelle binäre Triage durch unser MARE-Team (Malware Analysis and Reverse Engineering) bestätigte schnell, dass es sich bei der Probe um PHOREAL/RIZZO handelte, indem sie die Struktur und Funktionen unserer Probe mit früheren Berichten verglich. Darüber hinaus waren sie in der Lage, eine RC4-verschlüsselte Domäne aus einer RCDATA-Ressource zu extrahieren, wie in einem CYLANCE OceanLotus-Whitepaper aus dem Jahr 2018 beschrieben.

Die von MARE (thelivemusicgroup[.]com) löst derzeit in 103.75.117[.]250 das sich im Besitz von Oneprovider[.]COM ein Hosting-Unternehmen für dedizierte Server mit Sitz in Kanada und weltweit verteilten Rechenzentren.

https://ipinfo.io/ Abfrageergebnisse für 103.75.117[.]250

{
  "ip": "103.75.117[.]250",
  "city": "Hong Kong",
  "region": "Central and Western",
  "country": "HK",
  "loc": "22.2783,114.1747",
  "org": "AS133752 Leaseweb Asia Pacific pte. ltd.",
  "timezone": "Asia/Hong_Kong",
  "asn": {
    "asn": "AS133752",
    "name": "Leaseweb Asia Pacific pte. ltd.",
    "domain": "leaseweb.com",
    "route": "103.75.117[.]0/24",
    "type": "hosting"
  },
  "company": {
    "name": "Oneprovider.com - Hong Kong Infrastructure",
    "domain": "oneprovider[.]com",
    "type": "hosting"
  },
  "privacy": {
    "vpn": false,
    "proxy": false,
    "tor": false,
    "relay": false,
    "hosting": true,
    "service": ""
  },
  "abuse": {
    "address": "1500 Ste-Rose LAVAL H7R 1S4 Laval Quebec, Canada",
    "country": "CA",
    "email": "[email protected]",
    "name": "ONE PROVIDER",
    "network": "103.75.117[.]0/24",
    "phone": "+1 514 286-0253"
  },
  "domains": {
    "ip": "103.75.117[.]250",
    "total": 2,
    "domains": [
      "thelivemusicgroup[.]com",
      "cdn-api-cn-1[.]com"
    ]
  }

Die meisten interessanten Informationen über die Domain sind datenschutzgeschützt, aber die Daten "Aktualisiert" und "Erstellt" in der folgenden Abbildung könnten nützlich sein, um einzugrenzen, wie lange diese Domain böswillig verwendet wurde.

Der elastische Agent wurde anscheinend nach der Kompromittierung bereitgestellt, was unsere Fähigkeit einschränkte, den Vektor des ersten Zugriffs zu bestimmen. Ein Mandiant-Bericht aus dem Jahr 2017 deutet darauf hin, dass PHOREAL in einer "Stützpunkt"-Funktion eingesetzt werden kann, um die Opfertriage und die Nachbereitung von Werkzeugen nach der Ausbeutung zu ermöglichen.

Analyse

Elastic Security verwendet das Diamond-Modell , um die Beziehungen zwischen Angreifern und Opfern von Eindringlingen auf hoher Ebene zu beschreiben.

Begründung für die Bewertung des Angreifers

Basierend auf den beobachteten Aktivitäten und früheren Berichten gehen wir mit hoher Sicherheit davon aus, dass REF4322 sich um APT32/OceanLotus und den Akteur hinter diesem Vorfall handelt. APT32 ist seit 2014 aktiv undrichtet sich insbesondere an südostasiatische Regierungen und Unternehmen oder andere internationale Unternehmen mit Interessen in Vietnam. APT32 ist die einzige Gruppe, die derzeit als Betreiber der PHOREAL-Hintertür identifiziert wird, und unser Opfer entspricht dem geografischen und branchenspezifischen vertikalen Profil typischer und spezifischer früherer APT32-Opfer.

Fazit

YARA-Regeln

Wir haben eine YARA-Regel erstellt, um diese PHOREALE Aktivität zu identifizieren.

Yara-Regel zur Erkennung von REF4322/APT32 In-Memory-Backdoor PHOREAL/Rizzo

rule Windows_Trojan_PHOREAL {
    meta:
        Author = "Elastic Security"
        creation_date = "2022-02-16"
        last_modified = "2022-02-16"
        os = "Windows"
        arch = "x86"
        category_type = "Trojan"
        family = "PHOREAL"
        threat_name = "Windows.Trojan.PHOREAL"
        description = "Detects REF4322/APT32 in-memory backdoor PHOREAL/Rizzo."
        reference_sample = "88f073552b30462a00d1d612b1638b0508e4ef02c15cf46203998091f0aef4de"


    strings:
              \\  "\\.\pipe\{A06F176F-79F1-473E-AF44-9763E3CB34E5}"  ascii wide
        $a1 = { 5C 00 5C 00 2E 00 5C 00 70 00 69 00 70 00 65 00 5C 00 7B 00 41 00
                30 00 36 00 46 00 31 00 37 00 36 00 46 00 2D 00 37 00 39 00 46 00
                31 00 2D 00 34 00 37 00 33 00 45 00 2D 00 41 00 46 00 34 00 34 00
                2D 00 39 00 37 00 36 00 33 00 45 00 33 00 43 00 42 00 33 00 34 00
                45 00 35 00 7D 00 }

              \\  "Local\{5FBC3F53-A76D-4248-969A-31740CBC8AD6}"  ascii wide
        $a2 = { 4C 00 6F 00 63 00 61 00 6C 00 5C 00 7B 00 35 00 46 00 42 00 43 00
                33 00 46 00 35 00 33 00 2D 00 41 00 37 00 36 00 44 00 2D 00 34 00
                32 00 34 00 38 00 2D 00 39 00 36 00 39 00 41 00 2D 00 33 00 31 00
                37 00 34 00 30 00 43 00 42 00 43 00 38 00 41 00 44 00 36 00 7D 00 }

              \\  "{FD5F8447-657A-45C1-894B-D533926C9B66}.dll"  ascii
        $a3 = { 7B 46 44 35 46 38 34 34 37 2D 36 35 37 41 2D 34 35 43 31 2D 38 39
                34 42 2D 44 35 33 33 39 32 36 43 39 42 36 36 7D 2E 64 6C 6C }

              \\  PHOREAL start_address_bytes sequence
        $str_addr = { 8B FF 55 8B EC 56 E8 3F 3E 00 00 E8 34 3E 00 00 50 E8 14 3E
                00 00 85 C0 75 2A 8B 75 08 56 E8 21 }
    condition:
        2 of them
}

Abwehrempfehlungen

Die folgenden Schritte können genutzt werden, um die Schutzhaltung eines Netzwerks zu verbessern:

  1. Aktivieren von Elastic Security Memory Protection auf Windows-Endpunkten
  2. Nutzen Sie die oben enthaltenen YARA-Signaturen, um festzustellen, ob PHOREAL-Aktivitäten in Ihrer Organisation vorhanden sind
  3. Überwachen oder blockieren Sie den Netzwerkverkehr zu oder von identifizierten Netzwerk-IOCs und beheben Sie betroffene Systeme entsprechend.

Referenzen

In diesem Dokument wurden die folgenden Forschungsergebnisse referenziert:

Observables

IndikatorTypReferenzAnmerkungen
thelivemusicgroup[.]comDomain-NameC2-Domain mit Malware verschlüsselt
103.75.117[.]250IPv4-ADDRIP von thelivemusicgroup[.]COM
ec5d5e18804e5d8118c459f5b6f3ca96047d629a50d1a0571dee0ac8d5a4ce33SHA256tscon32.dllPHOREALE DLL

Artefakte

Artefakte stehen auch im ECS- und STIX-Format in einem kombinierten Zip-Bundle zum Download zur Verfügung.