Zaciemnianie poleceń w powłoce bash

nfsec.pl 2 miesięcy temu

P

owłoka bash zawiera wiele funkcji, które pojawiają się w innych popularnych powłokach, a także niektóre funkcje, które są tylko w niej. Dzięki rozbudowanej składni pozwala na pisanie skryptów w wewnętrznym języku programowania, a jego elementy upraszczają pracę w codziennej pracy z wydawanymi poleceniami np. touch {exploit,payload}.{c,sh} tworzy jednym poleceniem cztery pliki: exploit.c, exploit.sh, payload.c, payload.sh. Dzięki temu jedno polecenie może zostać wydane na wiele różnych sposobów używając techniki zaciemnienia / obfuskacji (ang. obfuscation), która zmienia składnię polecenia, ale zachowuje jego semantykę jednocześnie utrudniając jego zrozumienie i umożliwiając ominięcie różnego rodzaju filtrów i mechanizmów detekcyjnych. Na przykład popularne polecenie, takie jak:

cat /etc/passwd

może zostać zapisane na wiele różnych sposobów dając ten sam wynik:

cat /et\ c/pa\ sswd cat${IFS}/etc/passwd IFS=,;`cat<<<cat,/etc/passwd` {cat,/etc/passwd} cat</etc/passwd X=$'cat\x20/etc/passwd'&&$X cat ${HOME:0:1}etc${HOME:0:1}passwd {\c''\a""t,/e''*?/?a?s??} {\c''\a""\t,/\e''*?/\p*w\d} {$'\x63'\a$'\x74',/\e''*?/\p*w$'\x64'} {/b??/g?e?,.,/e??/p?s??d} $(echo {/b??/ge*n''t,\p\a\s\s\w\d}) $(echo cat /etc/[p][a][s][s][w][d]) cat `echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"` hex=(63 61 74 20 2F 65 74 63 2F 70 61 73 73 77 64) \ echo $(for i in ${hex[@]}; do echo -n -e "\x$i"; done) | sh cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd showme=/ehhh/hmtc/pahhh/hmsswd&&cat ${showme//hhh\/hm/}

Przykłady te wykorzystują znak ucieczki dla nowej linii, separator pól wejściowych, przekierowania strumieni, notację ANSI-C, podstawianie poleceń, rozbudowę klamry, manipulację ciągami tekstowymi, symbole wieloznaczne, wyrażenia regularne z nawiasami kwadratowymi, przekształcanie oraz rozszerzanie parametrów powłoki. Możliwości zapisu poleceń w postaci alternatywnej zależy tylko od naszej kreatywności oraz poziomu zaawansowania umiejętności administracyjno-programistycznych w powłoce.

Więcej informacji: Extraction of wiki.bash-hackers.org from the Wayback Machine

Idź do oryginalnego materiału