Wpis z mikrobloga

Interesująca metoda ukrywania kodu pod #linux - użyteczna do przemycania np. exploitów w prawilnym kodzie ( ͡º ͜ʖ͡º)

Aby utworzyć plik z ukrytym kodem, wykonaj polecenie:

echo -e "#"'!'"/bin/bash\necho co ten unknow...\n#\e[2A\necho nic tu nie ma\nexit 0;" >exploit.sh
Ciekawe efekty sprawdzania kodu:

◢ CAT ◣

$ cat exploit.sh
#!/bin/bash
echo nic tu nie ma...
exit 0;

◢ HEAD ◣

$ head exploit.sh
#!/bin/bash
echo nic tu nie ma...
exit 0;

◢ TAIL ◣

$ tail exploit.sh
#!/bin/bash
echo nic tu nie ma...
exit 0;

◢ WHILE ◣

$ while read line; do echo $line; done < exploit.sh
#!/bin/bash
echo nic tu nie ma...
exit 0;

➡➡➡ A normalne uruchomienie wygląda tak:

$ sh a
co ten unknow...
nic tu nie ma

---✂---
tl;dr: dzięki temu możesz wrzucić w teoretycznie bezpieczny kod linijkę (np. rm -rf /), którą trudno wyłapać z poziomu konsoli = ☠☠☠
---✂---


#security #bezpieczenstwo #hacking
imlmpe - Interesująca metoda ukrywania kodu pod #linux - użyteczna do przemycania np....

źródło: comment_0Jzh5zC6SebyLtFJutPNdHmwgn8Zn6Vn.jpg

Pobierz
  • 25
@imlmpe: @go3: @aquaz:
tak jak sobie poszukałem, to \e odpowiada ESC. natomiast [ - to polecenie test (sprawdzanie warunków) a 2A w ASCII to * - gwiazdka czyli dopasowuje wszystko.
Jakby to zapisać inaczej to:
echo co ten unknow...\n
#\e[2A
tylko ten # tak jakby to #\e[2A miało kasować wszstko co było wstawione wczesniej
@aquaz: chyba mam:
z 1 linku:

\e an ASCII escape character (033)
z 2 linku:

- Move the cursor up N lines:
\033[A

A więc: \e[2A zonacza przenieś kursor 2 linijki wyżej czyli:

echo -e "#"'!'"/bin/bash\n
echo co ten unknow...\n
#\e[2A\n
echo nic tu nie ma\n
exit 0;"

echo nic tu nie ma\n
exit 0;"

ląduje w miejscu

echo co ten unknow...\n
Tylko jeszcze nie bardzo czaję funkcji # , on
Nie jest o przypadkiem przejście o jedną linię do góry, co miałoby spowodować nadpisanie tego, co chcemy ukryć?


@aquaz: tak, to jest kod sterujący ANSI do przejścia na początek przedniej linii.
ale dlaczego # nie jest interpretowany jako początek komentarza (czyli linijki do pominięcia) w tym przypadku, tylko jako początek polecenia?


@virusriddle: hash to po prostu komentarz i to jest interpretowane jako komentarz. Dlatego podczas wykonywania kodu nic się nie dzieje z tą linijką. Komentuję znak kontrolny tylko po to, aby się nie wykonał (wtedy na ekran poleciałby komunikat, że to złe polecenie). Równie dobrze można zamienić znak # np. na instrukcję
własnie sobie sprawdziłem i zamiana # na echo jednak nie daje tego samego efektu - echo co ten unknow... się nie wykonało wtedy


@virusriddle: wykonało się, tylko efekt działania został ukryty :) zamień to polecenie z unknowem np na:

touch hacker

Plik zostanie utworzony.
czyli najlepiej scripty z nieznanych źródeł czytać lessem albo grepować


@wytrzzeszcz: tak, ale z less-em bym uważał, bo niektóre dystrybucje mają ustawione takie cudo:

alias less='less -r' (żeby kolorki były)

Najprościej skrypt otworzyć w dowolnym edytorze tekstu (np. vim, nano, pico itp) one nie interpretują sekwencji ucieczki.

Błąd który zaprezentowałem jest o tyle niebezpieczny, że często instalatory pakietów dostępnych w sieci prosza o wydanie polecenia (jako root) w stylu:

wget -O-