02 - Скан средствами OC

Если по каким то причинам отсутствует возможность использовать Nmap или любой другой сканер сети, то в стандартном наборе ОС Linux есть программы и утилиты которые можно заставить работать на наши цели. В целом, почти все в Linux можно использовать как технологии двойного назначения.

  • Netcat

  • Telnet

  • Perl или Python

  • Raw sockets (через /dev/tcp)

  • Hping3 (не входит в стандартный набор ОС)

// Я написал простой BASH скрипт для демонстрации
#!/bin/bash

# Функция для сканирования с использованием netcat
scan_with_netcat() {
local target_ip=$1
local port=$2
nc -vz "$target_ip" "$port"
}

# Функция для сканирования с использованием telnet
scan_with_telnet() {
local target_ip=$1
local port=$2
telnet "$target_ip" "$port"
}

# Функция для сканирования с использованием hping3
scan_with_hping3() {
local target_ip=$1
local port=$2
hping3 -c 1 -S -p "$port" "$target_ip"
}

# Функция для сканирования с использованием Perl
scan_with_perl() {
local target_ip=$1
local start_port=$2
local end_port=$3

for port in $(seq "$start_port" "$end_port"); do
perl -MIO::Socket::INET -e '
$target_ip = $ARGV[0];
$port = $ARGV[1];
$socket = IO::Socket::INET->new(
PeerAddr => $target_ip,
PeerPort => $port,
Proto    => "tcp",
Timeout  => 1
);
if ($socket) {
print "Port $port is open\n";
close($socket);
}
' "$target_ip" "$port"
done
}

#  bash scan (raw sockets /dev/tcp)
scan_with_bash_raw_socket() {
local target_ip=$1
local start_port=$2
local end_port=$3

for ((port = start_port; port <= end_port; port++)); do
(echo >/dev/tcp/"$target_ip"/"$port") >/dev/null 2>&1 && echo "Port $port is open"
done
}

# Запрос пользовательского ввода
echo "Выберите метод сканирования:"
echo "1. Netcat"
echo "2. Telnet"
echo "3. hping3 ---need apt install hping3"
echo "4. Perl   ---need install - cpan install IO::Socket::INET"
echo "5. bash scan (raw sockets /dev/tcp)"
read -p "Введите номер метода сканирования: " scan_method

read -p "Введите IP-адрес для сканирования: " target_ip

# Проверка выбора метода сканирования и выполнение соответствующей функции
case $scan_method in
1)
read -p "Введите порт для сканирования: " port
scan_with_netcat "$target_ip" "$port"
;;
2)
read -p "Введите порт для сканирования: " port
scan_with_telnet "$target_ip" "$port"
;;
3)
read -p "Введите порт для сканирования: " port
scan_with_hping3 "$target_ip" "$port"
;;

4)
read -p "Введите начальный порт: " start_port
read -p "Введите конечный порт: " end_port
scan_with_perl "$target_ip" "$start_port" "$end_port"
;;

5)
read -p "Введите начальный порт: " start_port
read -p "Введите конечный порт: " end_port
scan_with_bash_raw_socket "$target_ip" "$start_port" "$end_port"
;;
*)
echo "Неверный выбор метода сканирования."
;;
esac

Создайте файл, скопируйте в него скрипт и дайте скрипту права на исполнение

// создать файл
touch scan_os.sh
//скируйте скрипт и дайте права
chmod +x scan_os.sh
//и запустите
./scan_os.sh

Last updated