NFsec Logo

Polecenie ls i znaczniki czasowe

01/06/2026 (3 tygodnie temu) w CmdLineFu Możliwość komentowania Polecenie ls i znaczniki czasowe została wyłączona

J

est taka stara Uniksowa zagadka: „Wymień literę, od której nie zaczyna się parametr polecenia ls„. Dowodzi ona, że nawet bardzo zaawansowani użytkownicy systemów *nix są w stanie zapamiętać tylko kilka z dostępnych opcji, a reszta zazwyczaj ląduje w pliku konfiguracyjnym powłoki jako skróty taśmowych poleceń. „Problem”, z poleceniem ls jest taki, że standardowo wyświetla on dane w dwóch różnych formatach. Najstarsze pliki mają format: „miesiąc dzień rok”, natomiast nowsze pliki pliki mają format „miesiąc dzień godzina:minuty”. Domyślnie w poleceniu ls pliki starsze niż sześć miesięcy wyświetlają informację o roku. Wprowadza to mały chaos informacyjny i dodatkowo inny format daty niż jesteśmy przyzwyczajeni w Europie. Poniżej znajduje się kilka aliasów dla powłoki bash, które porządkują te sprawy:

alias ls="ls --color=auto --time-style='+%d-%m-%Y %H:%M:%S'"
alias ls_birth='ls -lArtF --time=birth'
alias ls_ctime='ls -lArtF --time=ctime'
alias ls_mtime='ls -lArtF --time=mtime'
alias ls_atime='ls -lArtF --time=atime'

Pierwszy z nich dodaje kolorowanie składni oraz ustandaryzowany format czasu. Kolejne pozwalają na wyświetlanie plików według: czasu utworzenia na systemie plików, czasu zmiany metadanych i-węzła (np. uprawnienia, zmiana ścieżki), czasu ostatniej modyfikacji (np. zmiana treści) oraz czasu ostatniego dostępu / odczytu:

agresor@stardust:~$ ls_birth
total 334268
-rw-r--r-- 1 agresor agresor       807 01-11-2025 06:37:00 .profile
-rw-r--r-- 1 agresor agresor      3771 01-11-2025 06:37:00 .bashrc
drwx------ 2 agresor agresor      4096 01-11-2025 06:37:01 .ssh/
drwx------ 3 agresor agresor      4096 01-11-2025 06:37:05 .cache/
-rw-r--r-- 1 agresor agresor         0 01-11-2025 06:37:06 .sudo_as_admin_successful
drwx------ 4 agresor agresor      4096 29-11-2025 11:34:28 .config/
-rw-rw-r-- 1 agresor agresor        66 29-11-2025 15:25:17 .selected_editor
drwx------ 2 agresor agresor      4096 29-11-2025 15:25:17 mail/
-rw-r--r-- 1 agresor agresor       220 29-11-2025 15:25:18 .bash_logout
-rw-rw-r-- 1 agresor agresor         0 29-11-2025 15:25:48 .addressbook
drwx------ 3 agresor agresor      4096 03-12-2025 13:44:59 .local/
-rw------- 1 agresor agresor      2556 13-02-2026 22:41:37 .bash_history
-rw------- 1 agresor agresor     24113 01-06-2026 11:59:54 .pinerc
-rw-rw-r-- 1 agresor agresor       221 01-06-2026 12:01:00 .bash_aliases
-rw------- 1 agresor agresor        94 01-06-2026 12:46:37 .lesshst

Sortowanie jest odwrócone – prezentując wpisy od najstarszych do najnowszych – bez (katalogów "." oraz "..").

Więcej informacji: Linux Notes: ls and Timestamps

Szybkie zrobienie lustra strony CMS WordPress za pomocą wget

28/03/2026 w CmdLineFu Możliwość komentowania Szybkie zrobienie lustra strony CMS WordPress za pomocą wget została wyłączona

Jeśli chcemy zrobić szybko lokalną kopię strony opartej na CMS WordPress lub Drupal, a nawet innego CMS możemy użyć narzędzia wget:

wget -P . -mpck --html-extension -e robots=off \
--user-agent="Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0" \
--wait 0.5 --random-wait https://nfsec.pl

Po wykonaniu tego polecenia otrzymamy folder ze statycznymi plikami HTML i innymi plikami, które możemy po prostu przesłać na swój serwer WWW zamiast do systemu CMS.

Więcej informacji: Creating a static copy of a Drupal, WordPress or other CMS website

Tani bruteforce subdomen za pomocą dig i xargs

29/10/2024 w CmdLineFu, Pen Test Możliwość komentowania Tani bruteforce subdomen za pomocą dig i xargs została wyłączona

Nie musimy ściągać wyrafinowanych narzędzi do enumeracji subdomen wybranej domeny. Powinna wystarczyć nam dobra lista oraz dwa narzędzia, które bardzo często znaleźć zainstalowane w systemie Linux: dig oraz xargs:

$ wc -l subdomians.txt
100 subdomians.txt

$ time cat subdomians.txt | xargs -P0 -I subdomain dig +noall subdomain.nfsec.pl +answer
www.nfsec.pl.		3600	IN	CNAME	nfsec.pl.
nfsec.pl.		3600	IN	A	146.59.92.70
ns1.nfsec.pl.		3600	IN	A	146.59.92.70
ns2.nfsec.pl.		3600	IN	A	213.251.188.141
ns3.nfsec.pl.		3600	IN	A	46.105.206.200
ns4.nfsec.pl.		3600	IN	A	46.105.207.200

real	0m0.390s
user	0m0.764s
sys	0m0.599s

If max-procs (-P) is 0, xargs will run as many processes as possible at a time.

Więcej informacji: Hostname bruteforcing on the cheap

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 <stdio.h>
#include <unistd.h>

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?

MacOS: masowa konwersja HEIC do JPEG

19/02/2024 w CmdLineFu Możliwość komentowania MacOS: masowa konwersja HEIC do JPEG została wyłączona

for i in `echo *.HEIC`; do sips -s format jpeg -s formatOptions best "$i" --out "${i%.*}.jpg"; done;

formatOptions przyjmuje parametry jakości: [low|normal|high|best|<percent>]

Tworzenie i usuwanie plików zaczynających się od myślników

25/01/2024 w CmdLineFu Możliwość komentowania Tworzenie i usuwanie plików zaczynających się od myślników została wyłączona

Pierwszym sposobem na tworzenie lub usuwanie pliku zaczynającego się od pojedynczego lub podwójnego myślnika jest dodanie ścieżki przed nazwą pliku:

touch ./--hard-to-create
rm ./--hard-to-remove

Drugim sposobem na tworzenie lub usuwanie pliku zaczynającego się od pojedynczego lub podwójnego myślnika jest zasygnalizowanie (--) wydawanemu poleceniu, że następuje koniec procesowania wewnętrznych opcji i wyłączenie interpretacji opcji zaczynających się od myślnika:

touch -- --hard-to-create
rm -- --hard-to-remove

Więcej informacji: How to create, open, find, remove dashed -file_name in Linux, What Does a Double-Dash in Shell Commands Mean?

Czyszczenie systemu z kontenerów docker

14/10/2022 w CmdLineFu Możliwość komentowania Czyszczenie systemu z kontenerów docker została wyłączona

alias containerstorm='docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker rmi $(docker images -q)'

Scraping adresów URL

24/03/2022 w CmdLineFu Możliwość komentowania Scraping adresów URL została wyłączona

curl -s https://nfsec.pl | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" | sort -u

Więcej informacji: SpiderFoot

Kilka przydatnych jednolinijkowców dla informatyki śledczej Linuksa

12/08/2021 w Bezpieczeństwo, CmdLineFu Możliwość komentowania Kilka przydatnych jednolinijkowców dla informatyki śledczej Linuksa została wyłączona

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

Pokaż wszystkie pakiety zainstalowane ręcznie w systemie

14/01/2021 w CmdLineFu 1 komentarz.

while read x; do echo -e "$x\n`aptitude why $x`" | grep 'Manually installed' -B1 |\
grep -v '^Manually installed\|^--'; done <<< $(apt-mark showmanual)