Розпізнаємо методи сканування: nmap і queso, Локальні мережі, статті

Toby Miller

Мета даної статті – допомогти аналітикам IDS і адміністраторам, які займаються настройкою firewall’ов, ідентифікувати nmap і queso сканування. Це не розгорнутий аналіз, а приклад методики, орієнтований на адміністраторів систем, яким необхідно більш глибоке розуміння роботи цих сканерів для боротьби з ними.

Сканер портів – утиліта використовується як адміністраторами систем, так і атакуючими ці системи з метою ідентифікації вразливостей шляхом посилки спеціальним чином згенерованих пакетів і аналізу відповідей тестованих систем.

Nmap

Nmap – вільно розповсюджуваний сканер портів, розроблений і підтримуваний Fyodor’ом. Він портовано на багато ОС (Linux, FreeBSD, Open BSD, Solaris і навіть NT) і, ймовірно, є найпоширенішим безкоштовним сканером. Внаслідок своєї простоти у використанні він може застосовуватися як новачком, так і експертом.
Тому виникає справедливе питання, як фахівці з IDS і Firewall’ам можуть ідентифікувати nmap сканування.
Це не є простим завданням. Nmap володіє безліччю опціій налаштування сканування (їх повний опис виходить за рамки цієї статті). Ми розглянемо тільки деякі з них:

-sS This switch performs a SYN scan 
-sX This switch performs XMAS scan 
-sF This switch performs a FIN scan 
-O This switch performs Operating Sysytem detection

Тут наведено лог сканування з опцією-sS разом з (сигнатурою, яку залишає nmap.

12:19:04.981033 attacker.com > victim.com: 
icmp: echo request (ttl 40, id 28524) 
	4500 001c 6f6c 0000 2801 2573 xxxx xxxx 
	xxxx xxxx 0800 e152 16ad 0000 
12:19:04.981207 victim.com > attacker.com: 
icmp: echo reply (ttl 255, id 0) 
	4500 001c 0000 0000 ff01 bdde xxxx xxxx 
	xxxx xxxx 0000 e952 16ad 0000 
12:19:04.981574 attacker.com.58397 > victim.com.www: 
ack 0 win 3072 (ttl 54, id 47895) 
	4500 0028 bb17 0000 3606 cbb6 xxxx xxxx 
	xxxx xxxx e41d 0050 5720 0003 0000 0000 
	5010 0c00 6a41 0000 
12:19:04.981687 victim.com.www > attacker.com.58397: 
R 0:0(0) win 0 (ttl 255, id 1) 
	4500 0028 0001 0000 ff06 bdcc xxxx xxxx 
	xxxx xxxx 0050 e41d 0000 0000 0000 0000 
	5004 0000 cd70 0000 
12:19:05.065741 attacker.com.58377 > victim.com.1531: 
S 1899041970:1899041970(0) win 3072 (ttl 54, id 22525) 
	4500 0028 57fd 0000 3606 2ed1 xxxx xxxx 
	xxxx xxxx e409 05fb 7131 14b2 0000 0000 
	5002 0c00 35f8 0000 
12:19:05.065924 victim.com.1531 > attacker.com.58377: 
R 0:0(0) ack 1899041971 win 0 (ttl 255, id 2) 
	4500 0028 0002 0000 ff06 bdcb xxxx xxxx 
	xxxx xxxx 05fb e409 0000 0000 7131 14b3 
	5014 0000 41e5 0000 
12:19:05.066228 attacker.com.58377 > victim.com.522: 
S 1899041970:1899041970(0) 
win 3072 (ttl 54, id 45591) 
	4500 0028 b217 0000 3606 d4b6 xxxx xxxx 
	xxxx xxxx e409 020a 7131 14b2 0000 0000 
	5002 0c00 39e9 0000

Розберемо декілька загальних сігнатур.Сначала nmap пінгуєт жертву echo пакетом, щоб переконатися, що хост живий. Наступна сіннатура – самотній ACK пакет, в якому 32-bit значення поля ACK дорівнює 0, у той час, як значення поля ACK завжди повинно бути завжди> 1, коли відсилається ACK пакет. Навіщо це зроблено? Причина для такої установки значення поля ACK проста – “stealth”. Чому nmap відішле в будь-якому разі два ACK пакету? RFC 793 допоможе пролити світло на це питання. RFC 793 pp.64 описує те, як TCP / IP-стек реагує на специфічні пакети. Ця реакція заснована на двох станах – Closed і Listen. Коли порт знаходиться в стані Closed, працюють наступні правила:
• вхідні пакети з встановленим RST-прапором відкидаються.
• відповіддю на пакет з невстановленим RST-прапором (тобто SYN, FIN і ACK пакети) буде RST-пакет.
Коли порт знаходиться в стані Listen, працюють наступні правила:
• вхідні пакети з встановленим RST-прапором відкидаються;
• відповіддю на пакет з невстановленим RST-прапором (тобто SYN, FIN і ACK пакети) буде RST-пакет.

Якщо встановлено біт SYN, то
• якщо встановлення з’єднання заборонено, то відсилається RST пакет;
• інакше у відповідь надсилається SYN | ACK (друга частина 3-х крокового handshake).

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

Інша загальна сигнатура nmap – використання високих значень для порту істочніка.Обично nmap використовує як джерело порти вище 20000 (це може бути змінено опцією-p). Причина використання таких значень портів в тому, що деякі IDS і firewall не розглядають вхідні пакети з цих портів як спроби сканування. У більшості ж випадків великі значення портів джерела вказують адміністраторам IDS і firewall на те, що їх сканують.
-SS – перша опція, яку ми розглянемо. Nmap c виставленої-sS відсилає SYN пакет (и) і чекає відповіді. Відповідь Може бути або SYN | ACK, якщо порт відкритий, або RST | ACK в іншому випадку. Цей спосіб сканування називається “half-scan”.
Таким чином визначається стан порту (закритий чи відкритий). Якщо nmap посилає пакет на відкритий порт, то відповіддю буде SYN | ACK. Як тільки це стає так, nmap відразу відповідає RST пакетом, який обриває з’єднання і в деяких випадках в логи на сканованому хості нічого не пишеться.
Опція-sX включає інший метод сканування – Xmas tree. Наслідком незвичайної установки прапорів (FIN, PSH, URG одночасно) є те, що деякі погано сконфігуровані firewall’и пропускають такі пакети. Що ж відбувається дивного, якщо прапори FIN, PSH і URG встановлені одночасно? Подивимося, що робить кожен прапор.
FIN – вказівка ​​на те, що посилає хост припиняє передачу даних.
PSH – хост-одержувач повинен передати дані, що містяться в пакеті, додатком якомога швидше.
URG – включає покажчик на те, що дані – термінові.

12:07:47.251547 attacker.com > victim.com: 
icmp: echo request (ttl 52, id 57064) 
	4500 001c dee8 0000 3401 a9f6 xxxx xxxx 
	xxxx xxxx 0800 98d3 5f2c 0000 
12:07:47.251720 victim.com > attacker.com: 
icmp: echo reply (ttl 255, id 2136) 
	4500 001c 0858 0000 ff01 b586 xxxx xxxx 
	xxxx xxxx 0000 a0d3 5f2c 0000 
12:07:47.252111 attacker.com.40335 > 
attacker.com.www:. ack 0 win 2048 (ttl 53, id 1254) 
	4500 0028 04e6 0000 3506 82e8 xxxx xxxx 
	xxxx xxxx 9d8f 0050 1b98 0003 0000 0000 
	5010 0800 f057 0000 
12:07:47.252225 victim.com.www > 
attacker.com.40335: R 0:0(0) win 0 (ttl 255, id 2137) 
	4500 0028 0859 0000 ff06 b574 xxxx xxxx 
	7f00 0001 0050 9d8f 0000 0000 0000 0000 
	5004 0000 13ff 0000 
12:07:47.336218 attacker.com.40315 > 
victim.com.824: FP 0:0(0) win 2048 urg 0 (ttl 53, id 43059) 
	4500 0028 a833 0000 3506 df9a xxxx xxxx 
	xxxx xxxx 9d7b 0338 0000 0000 0000 0000 
	5029 0800 0906 0000 
12:07:47.336392 victim.com.824 > 
attacker.com.40315: R 0:0(0) ack 0 win 0 (ttl 255, id 2138) 
	4500 0028 085a 0000 ff06 b573 xxxx xxxx 
	xxxx xxxx 0338 9d7b 0000 0000 0000 0000 
	5014 0000 111b 0000

Коротше кажучи, комбінація FIN, PSH, URG каже, що треба розірвати з’єднання, переслати дані в пакеті як можна швидше і помістити їх в звичайний потік даних. З мого досвіду це, як правило, не має сенсу (поки ви не намагаєтеся сканувати мережі). Таким чином наступна сигнатура nmap (при використанні опції Xmas) – urgent pointer завжди встановлений в 0.
Нарешті, подивимося на опцію-sF в парі з-O. Опція-sF – сканування хоста в поєднанні з пакетами з встановленим прапором FIN.-O – знаменита опція ОС fingerprinting (подробиці про техніки віддаленого визначення ОС, в т.ч. і за допомогою nmap `ів в” СР “№ 9 (10) за 2000 р.). Перед компіляцією бінарники nmap подивіться на файл figerprinting. Це вражаюча колекція TCP / IP сигнатур ОС, яка дійсно здивувала мене. Наведений нижче лог демонструє-sF сканування в поєднанні з опцією-O:

11:00:09.360631 attacker.com.49044 > victim.com.219: 
F 0:0(0) win 4096 (ttl 59, id 45102) 
 
11:00:09.361056 attacker.com.49044 > victim.com.48: 
F 0:0(0) win 4096 (ttl 59, id 30876) 
 
11:00:12.820777 attacker.com.49051 > victim.com.sunrpc: 
S 561959278:561959278(0) win 4096 
<wscale 10,nop,mss 265,timestamp 1061109567 0,eol> 
(ttl 59, id 11173) 
 
11:00:12.821526 victim.com.sunrpc > attacker.com.49051: 
S 2988831197:2988831197(0) ack 
561959279 win 16165 <mss 265,nop,nop, 
timestamp 2872982 1061109567,nop,wscale 0> 
(DF) (ttl 64, id 3059) 
 
11:00:12.821923 attacker.com.49052 > victim.com.sunrpc: 
. win 4096 <wscale 10,nop,mss 
265,timestamp 1061109567 0,eol> (ttl 59, id 25812) 
 
11:00:12.822090 attacker.com.49053 > victim.com.sunrpc: 
SFP 561959278:561959278(0) 
win 4096 urg 0 <wscale 10,nop,mss 265,timestamp 1061109567 0, 
eol> (ttl 59, id 10538) 
 
11:00:12.822519 attacker.com.49054 > victim.com.sunrpc: 
. ack 0 win 4096 <wscale 
10,nop,mss 265,timestamp 1061109567 0, 
eol> (ttl 59, id 36725) 
 
11:00:12.822795 attacker.com.49055 > victim.com.34459: 
S 561959278:561959278(0) win 4096 
<wscale 10,nop,mss 265,timestamp 1061109567 0, 
eol> (ttl 59, id 36400) 
 
11:00:12.823071 attacker.com.49056 > victim.com.34459: 
. ack 0 win 4096 <wscale 
10,nop,mss 265,timestamp 1061109567 0,eol> (ttl 59, id 46890) 
	4500 003c b72a 0000 3b06 ca8f xxxx xxxx 
	xxxx xxxx bfa0 869b 217e d16e 0000 0000 
	a010 1000 81fb 0000 0303 0a01 0204 0109 
	080a 3f3f 3f3f 0000 0000 0000 
 
11:00:12.823347 attacker.com.49057 > victim.com.34459: 
FP 561959278:561959278(0) win 4096 
urg 0 <wscale 10,nop,mss 265,timestamp 1061109567 0, 
eol> (ttl 59, id 733) 
	4500 003c 02dd 0000 3b06 7edd xxxx xxxx 
	xxxx xxxx bfa1 869b 217e d16e 0000 0000 
	a029 1000 81e1 0000 0303 0a01 0204 0109 
	080a 3f3f 3f3f 0000 0000 0000 
 
11:00:12.823642 atttacker.com.49044 > victim.com.34459: 
udp 300 (ttl 57, id 60791) 
	4500 0148 ed77 0000 3911 952b xxxx xxxx 
	xxxx xxxx bf94 869b 0134 40db 6060 6060 
	6060 6060 6060 6060 6060 6060 6060 6060 
	6060 6060 6060 6060 6060 6060 6060 6060 
 
11:00:12.823746 victim.com > attacker.com: 
icmp: victim.com udp port 34459 unreachable [tos 0xc0] 
(ttl 255, id 3067) 
	45c0 0164 0bfb 0000 ff01 afdb xxxx xxxx 
	xxxx xxxx 0303 fc44 0000 0000 4500 0148 
	ed77 0000 3911 952b 7f00 0001 7f00 0001 
	bf94 869b 0134 40db 6060 6060 6060 6060

1. якщо порт закритий, і надсилається FIN пакет відповіддю буде RST.
2. якщо порт відкритий, то FIN буде просто відкинутий і відповіді не буде.
Цей метод розрахований на вразливість дуже обмеженого числа IDS і firewall, оскільки тільки деякі стежать виключно за FIN | ACK пакетами, не звертаючи уваги на просто FIN-пакети.

Queso(by savage@apostols.org)

Хоча queso не настільки популярний і відточений як nmap, він все ще представлляет певний інтерес, і, відповідно, існує необхідність в аналізі його роботи. Зазвичай він відсилає 7 пакетів за раз, що зазначено у файлі документації. Ці пакети следущие: Queso дозволяє спуф IP, вибирати порти для сканування а також сам випадково вибирає як порту джерела значення від 4000 до 65000.Следующій лог показує як виглядає скан queso:

17:24:43.328743 attacker.com.19909 > victim.com.sunrpc: 
S 1567977113:1567977113(0) win 4660 
(ttl 255, id 51246) 
	4500 0028 c82e 0000 ff06 6095 xxxx xxxx 
	xxxx xxxx 4dc5 006f 5d75 6e99 0000 0000 
	5002 1234 f05f 0000 
17:24:43.352137 attacker.com.19910 > victim.com.sunrpc: 
S 1567977113:1567977113(0) ack 0 win 
4660 (ttl 255, id 51247) 
	4500 0028 c82f 0000 ff06 6094 xxxx xxxx 
	xxxx xxxx 4dc6 006f 5d75 6e99 0000 0000 
	5012 1234 f04e 0000 
17:24:43.370082 attacker.com.19911 > victim.com.sunrpc: 
F 1567977113:1567977113(0) win 4660 
(ttl 255, id 51248) 
	4500 0028 c830 0000 ff06 6093 xxxx xxxx 
	xxxx xxxx 4dc7 006f 5d75 6e99 0000 0000 
	5001 1234 f05e 0000 
17:24:43.390301 attacker.com.19912 > victim.com.sunrpc: 
F 1567977113:1567977113(0) ack 0 win 
4660 (ttl 255, id 51249) 
	4500 0028 c831 0000 ff06 6092 xxxx xxxx 
	xxxx xxxx 4dc8 006f 5d75 6e99 0000 0000 
	5011 1234 f04d 0000 
17:24:43.410079 attacker.com.19913 > victim.com.sunrpc: 
SF 1567977113:1567977113(0) win 4660 
(ttl 255, id 51250) 
	4500 0028 c832 0000 ff06 6091 xxxx xxxx 
	xxxx xxxx 4dc9 006f 5d75 6e99 0000 0000 
	5003 1234 f05a 0000 
17:24:43.430076 attacker.com.19914 > victim.com.sunrpc: 
P win 4660 (ttl 255, id 51251) 
	4500 0028 c833 0000 ff06 6090 xxxx xxxx 
	xxxx xxxx 4dca 006f 5d75 6e99 0000 0000 
	5008 1234 f054 0000 
17:24:43.450082 attacker.com.19915 > victim.com.sunrpc: 
S 1567977113:1567977113(0) win 4660 
(ttl 255, id 51252) 
	4500 0028 c834 0000 ff06 608f xxxx xxxx 
	xxxx xxxx 4dcb 006f 5d75 6e99 0000 0000 
	50c2 1234 ef99 0000

У балці присутсвуют всі 7 пакетів. Перша сигнатура – самотній FIN пакет. Що ж викликає появу цих пакетів, якщо ще не було встановлено з’єднання і FIN не містить ACK? У той час як встановлення з’єднання TCP – 3-x кроковий процес, розрив-є 4-х кроковим і виглядає так:

Computer A	FIN|ACK	->Computer B
Computer B ACK ->Computer A
Computer B FIN|ACK ->Computer A
Computer A ACK ->Computer B

Тут ми бачимо встановлений PSH-прапор. Це може викликати здивування, оскільки в TCP PSH-прапору повинен супроводжувати ACK прапор (поки з’єднання встановлено). Ми бачимо, що queso встановлює SYN | FIN прапори, які вказують хосту-одержувачу, що необхідно відкрити і відразу ж закрити з’єднання.

n/a n/a urg ack psh rst svn fin
8 4 2 1 8 4 2 1

Cамая цікава сигнатура, яку відсилає queso – один SYN пакет, в якому встановлені зарезервовані біти.Табл. 5 показує як виглядає 13 байт у TCP заголовку. Останні 2 біта зліва (помічені n / a-not available) – зарезервовані і, відповідно, не повинні бути встановлені.
Тепер вже просто встановити, що якщо ви бачите значення “c2” в 13 байті TCP заголовка, то хтось имееет злі (або просто допитливі – прим.ред.) Наміри щодо вашої мережі.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*