Классические методы определения операционной системы удаленного хоста
Существует масса различных способов получить информацию об ОС удаленного хоста. Удивительно, но самым эффективным из них и по сей день является следующий:
Playground~> telnet hpux.u-aizu.ac.jp
Tryin 163.143.102.12 ...
Connected to hpux.uaizu.ac.jp.
Escape character is '^]'.
HP-UX hpux B.10.01.A 9000/715 (ttyp2)
login:
Как видно, не имеет смысла прибегать к различным ухищрениям, если удаленный хост сам сообщает о своей ОС. Основная масса разработчиков ОС поставляют свои продукты именно с такими заголовками, и многие системные администраторы забывают их отключить. Но даже если вывод заголовка отключен, большинство прикладных программ выдадут информацию, находящуюся в заголовке ОС хоста по первому требованию (если администратор не позаботился об отключении этой возможности). Например, FTP-сервер:
Payfones> telnet ftp.netscape.com 21
Trying 207.200.74.26 ...
Connected to ftp.netscape.com.
Escape character is '^]'.
220 ftp29 FTP server (UNIX(r) System V Release 4.0) ready.
Далее, применив команду SYST, можно получить более подробную информацию:
SYST
215 UNIX Type: L8 Version SUNOS
Кроме того, если имеется доступ к FTP, атакующий может просмотреть bin-файлы в каталоге /bin/ls и определить, в какой ОС они используются. Аналогичную информацию можно получить и от WEB-сервера:
Playground> echo 'GET / HTTP/1.0\n' | nc hotboot.com 80 | egrep '^Server:'
Server: Microsoft-IIS/4.0
Playground>
Другие методы предусматривают просмотр базы данных сервера службы DNS (неэффективный метод, поскольку немногие из системных администраторов станут размещать эту информацию на DNS-сервере), а также упомянутую ранее социальную инженерию.