Вы находитесь на странице: 1из 2

СКАНЕР ЛОКАЛЬНОЙ СЕТИ

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

Написать сканер, получающий системную информацию о компьютерах в локальной сети.

Условия и требования:
1. В качестве входный данных задаются имя/пароль доменного администратора.
2. Требуемый список информации в приложении 1.
3. Минимизируется общее число сетевых запросов, насколько это возможно.
4. Если есть возможность минимизировать/сжать/зашифровать сетевой трафик - делаем.
Зависит от отвечающих на наши запросы служб и сервисов самой Windows.
5. Архитектурно, сканер - это одна программа. В том смысле, что у нее нету ответной
части/стейджеров/агентов,
которые необходимо было бы закинуть по сети и запустить, перед выполнением
сканирования.
То есть программа дергает только штатные службы Windows на удаленных хостах и
полностью на них полагается.
6. Язык реализации - C++ или C#.
Скрипты PowerShell/.bat попадают целыми кусками в системный журнал Windows, потому
исполнение в виде скрипта не подходит.
7. Оформление в виде .dll 32/64 бит, согласно документу "Оформление кода и сборок".
Точка входа совместима с нагрузками Cobalt Strike.
Размер .dll до 1 мегабайта.
Должна быть возможность передать параметры запуска в .dll.
8. Предусмотреть работу в много потоков, и приоритеты сканирования.
Оптимизировать под сканирование сетей от 1к узлов.

ПРИЛОЖЕНИЕ 1
Список получаемой информации (команды)
systeminfo
"---//---"
tasklist /v
"---//---"
ipconfig /all
"---//---"
netstat -abno
"---//---"
$Apps = @()
$Apps += Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\
CurrentVersion\Uninstall\*"
$Apps += Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\
Uninstall\*"
foreach($a in $Apps) {$a}
"---//---"
net share
"---//---"
net sessions
"---//---"
Get-WmiObject -Class Win32_logicaldisk
"---//---"
gci -force "C:\users\*" -ErrorAction SilentlyContinue
gci -force "C:\users\*\*" -ErrorAction SilentlyContinue | % {
$size = [math]::Round($_.Length/ 1Mb,2).ToString() + " MB"
$lastTime = $_.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss')
$file = $_.FullName
$out = "[$lastTime] {$size}`t $file"
$out
}
"---//---"
gci -force "C:\program files\*" -ErrorAction SilentlyContinue
gci -force "C:\program files (x86)\*" -ErrorAction SilentlyContinue
"---//---"
get-date
"---//---"
netsh advfirewall firewall show rule name=all

Из первой команды systeminfo нужны только следующие поля:


Name: Microsoft Windows Server 2012 R2 Standard|C:\Windows|\Device\
Harddisk0\Partition2
BuildNumber: 9600
CountryCode: 1
CSName: DC
Version: 6.3.9600
WindowsDirectory: C:\Windows
OSArchitecture: 64-bit
Organization:
Manufacturer: Microsoft Corporation
Locale: 0409
LocalDateTime: 2021-04-27 16:18:32
InstallDate: 2020-08-23 23:40:03
LastBootUpTime: 2021-04-23 21:23:39
SerialNumber: 00252-70000-00000-AA072
RegisteredUser: Windows User

Вам также может понравиться