2014 m. liepos 31 d., ketvirtadienis

USB įtaisų pažeidžiamumas

USB įtaisai nėra saugūs.

http://www.wired.com/2014/07/usb-security/

Šiame straipsnyje rašoma kaip išstudijavus usb tvarkykles, jas galima pakeisti taip, kad būtų sutrigdytas kompiuterio saugumas. USB įtaisai gali netik užkrėsti kompiuterį kenksminga programine įranga, bet ir užkrėsti kitus USB įrenginius.

Taip pat:
http://arstechnica.com/security/2014/07/this-thumbdrive-hacks-computers-badusb-exploit-makes-devices-turn-evil/


Flash įrenginiai, tokie kaip, SD, microSD, and SSD, turi integruota valdiklį, kuri atlieka sudėtingas užduotis būtinas  tvarkingam atmintis veikimui. Demontruojama kaip keičiamas blokų paskirstymo ir trynimo algoritmai, kurie leidžia įvairias MITM atakas vykdyti nesusekamu būdu.

http://www.wired.com/2014/07/usb-security/



2014-07-31

/etc/passwd ir /etc/shadow

Dokumentas saugantis vartotojų slaptažodžių informaciją.
$ cat /etc/passwd Iš suteikiamų teisių, dokumentą 'passwd' gali skaityti paprastas vartotojas.
/etc $ ls -l passwd shadow-rw-r--r-- 1 root root   1807 Lie 13 02:25 passwd
-rw-r----- 1 root shadow 1132 Lie 13 02:25 shadow

Kaip suprasti 'passwd' dokumento 'root' vartotoją?
$ less /etc/passwdroot:x:0:0:root:/root:/bin/bash
....

# root yra pats pirmas vartotojas, kuris yra sukuriamas diegimo metu
# x reiškia, kad slaptažodžiai tvarkomas 'shadow' dokumento
* reikštų, kad vartotojas negali prisijungti.
# root vartotojas paprastai turi 'user id', ir 'group id' '0:0'
# root - šioje vietoje yra vartotojo apibūdinimas arba 'Pilnas vardas'
# /root - namų direktorija
# /bin/bash - naudojama shell


Kaip suprasti 'shadow' dokumento namų vartotoją?
$ sudo cat /etc/shadow|tail -n1 install-gentoo:$6$u.3k0kNY$yNUUeHMacrH4UpU8ZdzFnZxgITlKiOvrqWZp7Ubj1eevg5pONIi8pR9uYRLeHMacrH4UpU8Z.:16313:0:99999:7:::

/etc/shadow
install-gentoo:$6$u.3k0kNY$yNUUeHMacrH4UpU8Z.:16313:0:99999:7:::
Prisijungimo vardas install-gentoo
Užkoduotas slaptažodis $6$u.3k0kNY$yNUUeHMacrH4UpU8Z.
Paskutinį karta pakeistas slaptažodis(Unix epoch time) 16313
Dienos prieš kurias slaptažodį galima pakeisti (0 reikškia - bet kada) 0
Slaptažodžio gyvavimo laikas(po kiek laiko pakeisti slaptažodį 99999
Kiek laiko dar galioja slaptažodis, pasibaigus slaptažodžio gyvavimui 7

# Kaip pridėti vartotoją?
$ sudo useradd namai
$ tail -n 1 /etc/passwd
namai:x:1001:1001::/home/namai

# Pridėjus vartotoja jam savaime nesukuriamas slaptažodis
$ sudo tail -n 1 /etc/shadownamai:!:16282:0:99999:7:::
# Sukuriame slaptažodį ir patikriname, kaip pasikeitė 'shadow' dokumentas
$ sudo passwd namai Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfull
$ sudo tail -n 1 /etc/shadow
namai:$6$ESdQ9.IL$Ah9n0OFxSrKGD899e7Uy9kzTNJ85Iva2XpL5ZAcFcmcwtwB8upeylvaG94R5WrsoHRq92uKz1ObxNeVmRjFRR0:16282:0:99999:7:::

# Arba tą patį galime atlikti komanda
$ adduser namai # Komanda 'change' leidžia keisti 'shadow' dokumento parametrus, tokius kaip slaptažodžio galiojimo terminas.
$ sudo chage -l namai
Last password change                    : Lie 31, 2014
Password expires                    : never
Password inactive                    : never
Account expires                        : never
Minimum number of days between password change        : 0
Maximum number of days between password change        : 99999
Number of days of warning before password expires    : 7

# Pakeičiam slaptažodžio galiojimo laiką į 43 dienas. $ sudo chage -M 43 namai
$ sudo tail -n 1 /etc/shadow
namai:$6$ESdQ9.IL$Ah9n0OFxSrKGD899e7Uy9kzTNJ85Iva2XpL5ZAcFcmcwtwB8upeylvaG94R5WrsoHRq92uKz1ObxNeVmRjFRR0:16282:0:43:7:::

Vartotojų keitimas su 'usermod'. usermod [nustatymai] vartotojas
-l, --login NEW_LOGIN
-c, --comment COMMENT
-s, --shell SHELL
-d, --home HOME_DIR
-L, --lock
-U, --unlock
'lock' prie slaptažodžio '/etc/shadow' dokumente prideda '!', tai reikškia nepavyks prisijungti su šiuo vartotoju.
$ cat /etc/passwd |tail -n 1 testas:x:1001:1001:,,,:/home/testas:/bin/bash
$ sudo usermod -s /bin/sh testas
$ sudo cat /etc/passwd |tail -n 1
testas:x:1001:1001:,,,:/home/testas:/bin/sh
# Komanda rodanti visų vartotojų informaciją. $ for i in `awk -F : {' print $1 '} /etc/passwd`; do echo $i; chage -l $i; done

Kur rasti passwd atsarginę kopiją, netyčia ištrynus šį dokumentą?

$ ll /var/backups/passwd.bak
-rw------- 1 root root 2830 Grd 23 03:37 /var/backups/passwd.bak

Pasiskaitymui:
https://en.wikipedia.org/wiki/Passwd

2014 m. liepos 30 d., trečiadienis

gpg

#gpg - naudojamas privačių/viešųjų raktų generavimui, parašams, duomenų vientisumo tikrinimui

# Informacija apie komandą
$ gpg --help
$ man gpg
$ info gpg

# Viešojo/privataus rakto poros generavimas
$ gpg --gen-key

# Esamų raktų sarašas
$ gpg --list-keys
$ gpg -k

# Jei norime sužinoti tik viešuosius/privačiuosius raktus
$ gpg --list-public-keys
$ gpg -
$ gpg --list-secret-keys
$ gpg -K

# Dokumento užkodavimas -e(koduoti), -a(armor koduotes formatas) -r(gavėjas)
$ gpg -ea  -r [id] failo_pavadinimas


#'.asc' - formatas sugeneruojamas, koduojant dokumenta su --armored arba '-a'
# Ši komanda atspausdins rezultatą į stdout
$ gpg -d failo_pavadinimas.asc

# '-o'(output) išveda atkoduota rezultatą į dokumentą.
$ gpg -o atkoduota -d failo_pavadinimas.asc

# Kaip pasirašyti užkoduotą dokumentą? '-s'(pasirašyti, .ang --sign)
# Pasirašius sukuriamas parašo dokumentas failo_pavadinimas.asc.asc
$ gpg -sa failo_pavadinimas.asc

# Parašo patikrinimas
# Kaip patikrinti parašą su užkoduotu dokumentu ?
$ gpg --verify-files failo_pavadinimas.asc failo_pavadinimas.asc.asc

 # Dokumento MD5, SHA1, RMD160, SHA224, SHA384, SHA512  parašo apskaičiavimas

$ gpg --print-md rootfs1.gz
gpg: invalid hash algorithm `rootfs1.gz'
sup@sup-desktop:~/Documents/test$ gpg --print-mds rootfs1.gz
rootfs1.gz:    MD5 = E0 DB 52 AB 45 13 34 25  5E 6B 54 DC EF CA FB CE
rootfs1.gz:   SHA1 = 5A16 14A5 A871 5717 4797  3CF8 D277 6FC2 4ECE 070C
rootfs1.gz: RMD160 = 4F78 D1A4 786C 9B3D 77BA  0941 FCDE 5167 5FE5 DF57
rootfs1.gz: SHA224 = BFA7FC8C F25D5697 250E8687 70F5C866 154AAFBB D7F25254
                     0B30E411
rootfs1.gz: SHA256 = EA942AC8 4B7DB63E 0116D0C6 20F98CC6 3B085605 FA712995
                     E23F0A98 DC0C07E7
rootfs1.gz: SHA384 = 70C4D6B6 FE3BC5FA A94C422E 39584FE2 344290EB EA499CD1
                     E0E10CFC AA4BFF77 E3148B24 5651116A 71EAF1DA 17C3E741
rootfs1.gz: SHA512 = 2C59ECA3 AC4782C1 43C0BFE8 CF2F7A43 FDBD26D7 48AAC521
                     52129C09 14DA74CF 06BAC98B 7772A29E 4B725CDE EEB01443
                     88DF14CA EAB48078 C4F7638A 5C10EA7E




2014 m. liepos 27 d., sekmadienis

lsattr ir chattr

# lsattr (rodo dokumento atributus)

$ lsattr first.py
-------------e-- first.py


# chattr (keičia dokumento atributus linux sistemoje)
       [extent  format  (e), immutable  (i)]

$ sudo chattr +i first.py
$ lsattr first.py
----i--------e-- first.py
$ echo "#Pabaiga ">>first.py
bash: first.py: Permission denied
$ sudo chattr -i first.py
$ lsattr first.py
-------------e-- first.py


# Dabar galime modifikuoti dokumentą
# chatter ir lsattr galime sujungti į vieną komandą

$ sudo chattr +i first.py && lsattr first.py

# Kitos komandos

# Rodys visų dokumentų atributus
$ lsattr -a

# Append nustatymas leis tik prirašyti informacija '>>' -veiks, '>' - ne
$ sudo chattr +a first.py
$ lsattr first.py
-----a-------e-- first.p
$ echo "#pakeitimas" > first.py
bash: first.py: Operation not permitted
# 1 - reiškias kad įvyko klaida, 0 - operacija sekmingai įvykdyta
$ echo $?
1
$ echo "#pakeitimas" >> first.py
$ echo $?
0

2014 m. liepos 26 d., šeštadienis

Netbios_reflected_DDoS

https://www.cert.lt/tikrinti

137     00-00-00-00-00-00     Netbios_reflected_DDoS

# :139 prievado skanavimas

$ sudo netstat -ntlp |grep :139

# Stabdomas/paleidžiamas samba servisas

sudo service smbd stop
sudo /etc/init.d/smbd stop


sudo service smbd start
sudo /etc/init.d/smbd start



# Kaip padaryti, kad sambad servisas automatiškai neužsikrovinetu?

$ echo 'manual' | sudo tee /etc/init/smbd.conf

# Patikrinam ar įrašta samba..

$ dpkg -s samba|grep installed

..ištrinam samba: 

$ sudo apt-get remove samba
 

# Taip pat šį procesą galima išjungi su servisų konfiguravimo panelė - 'rcconf'

# Įrašom rcconf
$ apt-get install rcconf
...
$ rcconf





Literatūra:
http://www.linuxsecurity.com/resource_files/firewalls/firewall-seen.html#netbios 
(apie netbios)

http://askubuntu.com/questions/69810/how-do-i-add-remove-the-hidden-startup-applications


nmap skanavimo pagrindai

Paleidžiant 'nmap' be 'sudo' atliekamas TCP skanavimas, kai su 'sudo' atliekamas SYN skanavimas.

nmap pagalba
$ man nmap
$ nmap

# nmap dokumentacija
http://nmap.org/book/man.html

Komanda '-v' rodo, kas vyksta skanavimo metu
$ nmap -v localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2014-07-25 23:23 EEST
Initiating Ping Scan at 23:23
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 23:23, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 23:23
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 139/tcp on 127.0.0.1
Discovered open port 445/tcp on 127.0.0.1
Discovered open port 631/tcp on 127.0.0.1
Completed Connect Scan at 23:23, 0.02s elapsed (1000 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00044s latency).
Not shown: 997 closed ports


Prievadai ir portai nustatomi pagal /etc/services
PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
631/tcp open  ipp


Skanavimo rezultatų išvedimui naudojamas '-oN'(outputNormal), '-oS'(<rIpt kIddi3)
$ nmap -v -oS nmap.log localhost
$ cat nmap.log

$tart1ng nmAP 6.40 ( http://nmap.OrG ) at 2014-07-25 23:41 E3ST
Nmap scaN r3poRT f0r l0caLh0$t (127.0.0.1)
hoSt iS up (0.00048z lAtEncy).
NOt $hoWn: 997 cl0s3D port$
p0RT    STaTE S3RV!C3
139/Tcp 0p3n  n3tbI0s-SSn
445/tcp Open  micR0soFt-ds
631/tcp 0PeN  ipp


Detalesnė informacija apie procesą, naudojant 'netstat -ntlp', parodo prievado :631 vykdomą procesą 'cupsd'
$ sudo netstat -ntlp  | grep :631
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      2652/cupsd     
tcp6       0      0 ::1:631                 :::*                    LISTEN      2652/cupsd     
 


Udp portų skanavimas su nmap '-sU'(scanUdp)
netstat komanda su '-nulp'(p -progran_name) parametru, galima peržiūrėti lokalios mašinos prievadus ir palyginti rezultatus

$ sudo nmap -v -sU localhost
...
$ netstat -nulp

...

Nmap komanda atvaizduojanti ip adresus ir mašrutų lentelę
sudo nmap --iflist

-sV rodo servisų versijas
sudo nmap -sV localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2015-04-27 22:27 EEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000023s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE     VERSION
80/tcp   open  http        Apache httpd 2.4.7 ((Ubuntu))
139/tcp  open  netbios-ssn Samba smbd 3.X (workgroup:
 


Parodo svetainės http turinį:
sudo nmap -p80 --script http-title localhost

Atspausdina surastas http direktorijos failus:
sudo nmap -p80 --script http-enum localhost 

Dar detalesnė informacija:
sudo nmap -p80 --script http-enum --script-args http-enum.displayall localhost

2014 m. liepos 23 d., trečiadienis

gnu/Linux sistemos logai

Bendras sisteminių įrašų katalogas:
$ /var/log

Logų stebėjimas realiu laiku:
$ tail -f /var/log/syslog

Logų stebėjimas su systemd:
$ journalctl -f

Pagal prioritetą:
$ journalctl PRIORITY=3

dmesg rodo informacija, kuri buvo užkrauta į sistema paskutinio paleidimo metu
$ man dmseg
dmesg - print or control the kernel ring buffer


Failas randamas:
$ /var/log/dmseg

Taip pat galima rasti:
$ which dmesg
/bin/dmesg


Naudojant su grep, galima ištraukti informacija apie kompiuterio naudojamą atmintį, procesorių
$ dmesg | grep -i cpu
$ dmesg | grep -i memory


Kaip patikrinti sistemos naudojamus diskus?
$ dmesg | grep -i sd[a-c]

Kaip patikrinti kokia naudojama tinklo plokštė?
$ dmesg | grep -i eth

Kaip patikrinti bios informaciją, serijos numerius?
$ sudo dmidecode | less

Taip pat galime rasti detalesnius sistemos log failus:
$ ps ax | grep syslog

PSI įrenginiai:
$ lspci

USB įrenginiai:
$ lsusb

CPU informacija:
$ lscpu

Branduolio modulio informacija ir detalesnė informacija apie modulius.
$ lsmod
$ modinfo

Namų vartotojo disko vietos info:
$ df -h ~

Logwatch - programa skirta žurnalo įrašų stebėjimui, su tokiomis funkcijomis, kaip ataskaitų siuntimas į el.paštą:
$ apt-get instal logwatch

Komanda el. pašto siuntimui:
$ sudo logwatch --service all --detail high --mailto elektroninis@pastas.lt --range yesterday


sar - sistemos resursai renkami kas 10 min.
Nustatymai:-u CPU naudojimas per visą dieną.
-d disko naudojimas.
-r atminties naudojimas.
-S swap atmintis.
-B pagin statistika.
naudojimo pvz:sar -u 1 4 #Atvaizduos CPU informacija 4 kartus realiu laiku kas 1 sekundę.
sar -r 1 #Atvaizduos kas 2 sekundes informaciją apie atmintį.

cron.d dokumente matome, sar įrašus:
$cat /etc/cron.d/sysstat

# Activity reports every 10 minutes everyday
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
# Additional run at 23:59 to rotate the statistics file

59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2