You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
3.8 KiB
76 lines
3.8 KiB
СКАНЕР ЛОКАЛЬНОЙ СЕТИ
|
|
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
|
|
|
|
Написать сканер, получающий системную информацию о компьютерах в локальной сети.
|
|
|
|
Условия и требования:
|
|
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
|