NFsec Logo

Duży HEAP, duży CPU, duży GC

08/10/2019 w Administracja, Debug Możliwość komentowania Duży HEAP, duży CPU, duży GC została wyłączona

Nasze maszyny posiadają następujące parametry: 64 GB RAM oraz 32 wątków CPU (z HT). Jest na nich uruchomiony ElasticSearch v5 z złotą zasadą 50% na heap oraz 50% na cache systemu plików. Oczywiście heap jest ustawiony tak, aby nie przekraczał trybu „zero-based”, czyli w tym przypadku 30720 MB:
[ czytaj całość… ]

Gdybym miał ukryć flagę CTF w Linuksie

29/09/2019 w CmdLineFu, Debug Możliwość komentowania Gdybym miał ukryć flagę CTF w Linuksie została wyłączona

0. Utworzenie pliku:

touch .findmehere

1. Lokalizacja obiektu w systemie plików:

ls -i .findmehere
15466911 .findmehere

2. Zakodowanie wiadomości:

while read -n1 char; do printf "%d " \'$char; done
C67 T84 F70 .46 f102 l108 a97 g103

3. Umieszczenie wiadomości w pliku:

sudo debugfs -w -R 'set_inode_field /home/ctf/.findmehere \
version 6784704610210897103' /dev/sda2

4. Sprawdzenie zapisu wiadomości:

sudo debugfs -R 'stat <15466911>' /dev/sda2
Inode: 15466911 Type: regular Mode: 0640   Flags: 0x80000
Generation: 1555060808 Version: 0x5e281ce5:65935ccf
User: 0 Group: 0 Project: 0 Size: 0
File ACL: 0
Links: 1 Blockcount: 0
Fragment:  Address: 0 Number: 0 Size: 0
 ctime: 0x5d8faaf2:5d64fd54 -- Sat Sep 28 20:48:18 2019
 atime: 0x5d8faaf2:5d64fd54 -- Sat Sep 28 20:48:18 2019
 mtime: 0x5d8faaf2:5d64fd54 -- Sat Sep 28 20:48:18 2019
crtime: 0x5d8faaf2:5d64fd54 -- Sat Sep 28 20:48:18 2019
Size of extra inode fields: 32
EXTENTS:

5. Weryfikacja wiadomości:

printf "%d\n" 0x5e281ce565935ccf
6784704610210897103
for i in `echo 67 84 70 46 102 108 97 103`; do echo -ne \\x$(printf %02x $i); done
CTF.flag

Więcej informacji: Ext4 Disk Layout, Czas utworzenia pliku w Linuksie

Testowanie ruchu HTTP 1.1 za pomocą curl

10/08/2019 w Administracja, CmdLineFu, Debug Możliwość komentowania Testowanie ruchu HTTP 1.1 za pomocą curl została wyłączona

C

url może być pomocnym narzędziem przy debugowaniu. Gdy na rozpoznanie problemu składają się problemy z: siecią, DNS, serwerem lub wydajnością samej webaplikacji – możemy bez wahania po niego sięgnąć. W celu izolacji problemu możemy uruchomić curl’a w następujący sposób:

curl -w "$(date +%FT%T) dns: %{time_namelookup} connect: %{time_connect}\
 firstbyte: %{time_starttransfer} total: %{time_total} HTTP: %{http_code}\n"\
 -o /dev/null -s "https://apka.dev"

Polecenie takie puszczone w pętli da nam ładny podgląd na każde żądanie HTTP:
[ czytaj całość… ]

Podstawy systemów rozproszonych: odległości węzłów

14/05/2018 w Administracja, Debug Możliwość komentowania Podstawy systemów rozproszonych: odległości węzłów została wyłączona

W

edług „Wprowadzenia do systemów rozproszonych” charakterystyczne opóźnienie pomiędzy węzłami ( serwerami / agentami / procesami / aktorami ) wynika z: operacji wewnątrz samych węzłów, które są „szybkie„; operacji pomiędzy węzłami, które są „wolne” – co jest szybkie, a co wolne zależne jest od tego, co wykonuje sam system. Za przykład posłuży nam klaster, który komplet danych utrzymuje po części na każdym węźle wchodzącym w jego skład. Czyli klient odpytując klaster o część interesujących go danych może odpytać o nie dowolny węzeł, ale musi poczekać aż jego odpowiedź zostanie złożona z danych zwróconych przez każdego uczestnika w klastrze. Tak na przykład działa shardowanie danych w Elasticsearch.
[ czytaj całość… ]

Ustawienie zmiennej środowiskowej TZ oszczędza tysiące wywołań systemowych

26/02/2017 w Administracja, Debug Możliwość komentowania Ustawienie zmiennej środowiskowej TZ oszczędza tysiące wywołań systemowych została wyłączona

A

by zaoszczędzić dodatkowych wywołań systemowych na serwerze przez chodzący proces – wystarczy ustawić zmienną środowiskową TZ na wartość: :/etc/localtime. Spowoduje to, że glibc nie będzie wykonywać zbędnych, dodatkowych wywołań systemowych. Szczególnie sprawdza się to w systemach, w których ustawienie strefy czasowej nie jest cyklicznie przestawiane – lub istnieje możliwość restartu danego procesu, kiedy to występuje (w większości przypadków taka zmiana występuje tylko raz – zazwyczaj w polskich realiach jest to przestawienie z UTC na CET).
[ czytaj całość… ]

Ubuntu 14.04, 16.04 LTS i błąd out of memory (oom) killer

29/01/2017 w Administracja, Debug Możliwość komentowania Ubuntu 14.04, 16.04 LTS i błąd out of memory (oom) killer została wyłączona

Jeśli podczas łatania np. DirtyCow na naszym serwerze wyposażonym w Ubuntu Trusty lub Xenial zainstalowane zostało jądro w wersji 4.4.0-59-generic i nagle wcześniej działające bez problemu aplikacje oraz daemony zaczęły zaliczać błędy typu: out of memory (brak pamięci) jest wielce prawdopodobne, że jest to spowodowane błędem, który wkradł się podczas rozwoju wersji. Tymczasowym rozwiązaniem do czasu aż zostanie wydany kolejny patchset naprawiający to zachowanie jest cofnięcie się do wersji: 4.4.0-57.

Więcej informacji: mm, oom: prevent premature OOM killer invocation for high order request

Czas utworzenia pliku w Linuksie

17/11/2016 w Debug Możliwość komentowania Czas utworzenia pliku w Linuksie została wyłączona

J

ak sprawdzić czas utworzenia pliku w systemie plików ext2/ext3/ext4? Na początku należy za pomocą stat pobrać numer i-node pliku, a następnie posłużyć się debugfs, aby wyświetlić jego szczegóły na danym urządzeniu:

root@darkstar:~# stat -c %i plik
131124
root@darkstar:~# debugfs -R 'stat <131124>' /dev/sda2

Inode: 131124   Type: regular    Mode:  0755   Flags: 0x80000
Generation: 2191072338    Version: 0x00000000:00000001
User:     0   Group:     0   Size: 8988
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 24
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x57ae0ac4:22d8c824 -- Fri Aug 12 19:43:32 2016
 atime: 0x57ae0abf:1c2bc7bc -- Fri Aug 12 19:43:27 2016
 mtime: 0x57ae0abf:1c2bc7bc -- Fri Aug 12 19:43:27 2016
crtime: 0x57ae0abf:1c2bc7bc -- Fri Aug 12 19:43:27 2016
Size of extra inode fields: 32
EXTENTS:
(0-2):557400-557402

Więcej informacji: Birth is empty on ext4

Ekstrakcja ze stosu TCP/IP

25/09/2016 w Administracja, Debug Możliwość komentowania Ekstrakcja ze stosu TCP/IP została wyłączona

T

CPxtract jest narzędziem używanym do ekstrakcji konkretnego zestawu plików z zrzutów sieciowych w formie plików pcap poprzez zaglądanie w sesje TCP i odszukiwaniu skonfigurowanych sygnatur – technika ta nazywa się data carving. W przypadku ruchu sieciowego możemy go wykorzystać na przykład, jeśli chcemy dowiedzieć się, co dokładnie ściąga złośliwe oprogramowanie lub przeanalizować wybrany scenariusz ataku – ustawiając wcześniej sniffer na nasłuchiwanie i nagrywanie sesji połączeń. Przykład wydobycia plików .html oraz .jpg z nagranej sesji HTTP:

~:# tcpxtract -f ff.pcap -o dump/
Found file of type "html" in session [192.168.1.10:34262 -> 81.225.61.6:20480],
exporting to dump/00000000.html
Found file of type "html" in session [192.168.1.10:34262 -> 81.225.61.6:20480],
exporting to dump/00000001.html
Found file of type "jpg" in session [81.225.61.6:20480 -> 192.168.1.10:35030],
exporting to dump/00000008.jpg

Więcej informacji: tcpxtract, tcpxtract version 1.0

Ubuntu 14.04 LTS rsyslog time travel

19/05/2016 w Administracja, Debug Możliwość komentowania Ubuntu 14.04 LTS rsyslog time travel została wyłączona

G

dyby kogoś zdziwiły wpisy z przeszłości w logach np. dotyczące różnego rodzaju zadań wykonywanych w dość małych odstępach czasowych to nie należy się stresować:

May 19 18:55:01 darkstar CRON[7328]: (test) CMD (/bin/echo "test")
May 15 07:45:01 darkstar CRON[7942]: (test) CMD (/bin/echo "test")
May 19 19:05:01 darkstar CRON[7945]: (test) CMD (/bin/echo "test")
May  9 10:55:01 darkstar CRON[8563]: (test) CMD (/bin/echo "test")
May  4 18:50:01 darkstar CRON[8880]: (test) CMD (/bin/echo "test")
May 19 19:35:01 darkstar CRON[9819]: (test) CMD (/bin/echo "test")
May  9 19:45:01 darkstar CRON[10093]: (test) CMD (/bin/echo "test")
May 19 19:40:01 darkstar CRON[10143]: (test) CMD (/bin/echo "test")

Bug do Ubuntu zgłoszony już w 2015 roku, ale jakoś team rsyslog’a nie pali się do jego poprawienia.

The resulting partition is not properly aligned for best performance

20/03/2016 w Debug Możliwość komentowania The resulting partition is not properly aligned for best performance została wyłączona

Jeśli otrzymujemy taki „warning” przy zakładaniu partycji w programie parted – zamiast konkretnej liczby bajtów lub sektorów wystarczy w przy ostatniej lub obydwu granicach podać wartość procentową np. mkpart primary ext4 0% 100%.