Documente Academic
Documente Profesional
Documente Cultură
Axa prioritară 1: Cercetare, dezvoltare tehnologică și inovare (CDI) în sprijinul competitivităţii economice și
dezvoltării afacerilor
Acțiunea 1.2.1: Stimularea cererii întreprinderilor pentru inovare prin proiecte de CDI derulate de întreprinderi
individual sau în parteneriat cu institutele de CD și universități, în scopul inovării de procese și de produse în sectoarele
economice care prezintă potențial de creștere
”Investiţii pentru viitorul dumneavoastră”
Titlul proiectului: Centrul de excelență pentru securitatea cibernetica și reziliența infrastructurilor critice (SafePIC)
Cod My SMIS: 120436
Nr. Contract: 270/23.06.2020
Beneficiar: SC SAFETECH INNOVATIONS SRL
Introducere .........................................................................................................................4
Concluzii............................................................................................................................ 29
Referințe bibliografice....................................................................................................... 30
Pag. 2
Centrul de excelență pentru securitatea
cibernetică și reziliența infrastructurilor critice
SafePIC
Pag. 3
A2. Cercetare industrială, activităţi de inovare de produs, servicii, de
proces şi organizaţională
Introducere
După cum s-a prezentat în livrabilul din etapa anterioară, s-a ales utilizarea utilitarului
Conpot (http://conpot.org ) pentru simularea dispozitivelor PLC și a protocoalelor specifice
acestora.
Pornind de la software-ul open-source disponibil pe site-ul Github
https://github.com/mushorg/conpot , mulți ingineri IT sau entuziaști au creat așa-numite
containere Docker cu diferite implementări ale software-ului original, oferind multiple moduri
de utilizare ale acestui software.
Iată rezultatul unei căutări pe site-ul oficial https://hub.docker.com după utilitarul
Conpot:
Pag. 5
Cele mai interesante implementări în Docker ale acestui software par a fi următoarele:
• https://hub.docker.com/r/honeynet/conpot -implementarea software-ului de pe site-ul
original, https://github.com/mushorg/conpot
• https://hub.docker.com/r/stingar/conpot -implementare Conpot pentru utilizare cu
CommunityHoneyNetwork
• https://hub.docker.com/r/dtagdevsec/conpot-T-Pot -include foarte multe honeypot-uri,
inclusiv Conpot
• https://hub.docker.com/r/nu11secur1ty/conpot -conpot-T-opts, include mai multe
profile de echipamente
În laboratorul proiectului se vor testa aceste containere și, cel mai probabil, se vor utiliza
mai multe dintre acestea, pentru a simula cât mai multe echipamente si protocoale.
Pentru că se va lucra cu mai multe containere Docker, am considerat necesar prezentarea
conceptelor de baza ale acestei tehnologii.
Docker este un instrument care folosește containere pentru a ușura mult crearea,
desfășurarea și rularea aplicațiilor.
El încapsulează aplicația împreună cu toate celelalte elemente, cum ar fi librăriile
externe și alte astfel de dependențe care sunt necesare pentru a rula aplicația într-un mediu
izolat.
Acest lucru permite aplicației să ruleze pe orice mașină Linux, indiferent de setările
personalizate ale mașinii, care pot fi diferite de mașina în care a fost codat și testat.
Pag. 6
Docker are codul sursă deschis, ceea ce înseamnă că oricine poate adăuga funcții și
funcționalități pentru a răspunde nevoilor sale, contribuind astfel la îmbunătățirea
instrumentului.
Docker este proiectat astfel încât să își croiască drum în ecosistemul DevOps. Îi ajută
pe dezvoltatori să se concentreze doar pe dezvoltare, fără să fie preocupați de sistemul pe care
va rula codul.
Ei pot utiliza unul dintre mai multe programe deja proiectate pentru a rula pe Docker
ca șablon pentru aplicația lor. Docker permite echipei de operare IT să creeze un mediu care să
reproducă serverul de producție și să permită tuturor să lucreze la proiecte cu aceeași setare,
indiferent de mediul local.
Un container Docker este într-un fel destul de similar cu o mașină virtuală, dar spre
deosebire de aceasta, nu are un sistem de operare întreg în el.
Containerele utilizează kernel-ul Linux al sistemului pe care sunt găzduite și necesită
doar instalarea pachetelor pentru serviciul Docker. Acest lucru reduce semnificativ
dimensiunea fiecărui container și îmbunătățește performanța folosind resurse mai puține.
Containerele Docker pot fi create destul de rapid, deoarece ele nu pornesc un sistem de
operare, ci doar execută o aplicație.
docker-compose.yml . Acest fișier oferă o serie de informații despre modul în care trebuie să
ruleze un container.
Fișierul docker-compose.yml din directorul proiectului Conpot ne oferă informații
despre serviciile ce sunt simulate de către acest honeypot:
După cum se vede, sunt deschise mai multe porturi, care au rolul de a simula HTTP,
S7Comm, Modbus, SNMP, Bacnet, IMPI, FTP, TFTP și EN/IP.
După pornirea acestui container, prin comanda docker ps se pot verifica rularea
containerului și porturile pe care le deschide:
Pag. 8
Se observă că sunt descoperite atât porturi TCP, cât și UDP, ceea ce arată că honeypot-
ul emulează destul de bine serviciile respective.
Pag. 9
Unele servicii se pot testa cu ajutorul framework-ului Metasploit
(https://www.metasploit.com/ ), disponibil de exemplu în distribuția Kali Linux.
Iată o interogare a serviciului SNMP:
Pag. 10
După cum se observă, toate interogările efectuate par a avea stații active.
Trebuie setat sa fie doar unele active.
Încercările de a citi valori folosind modbusclient nu au avut însă succes, după cum se
poate vedea mai jos:
Acesta se poate instala în mai multe feluri, dar pentru testare s-a ales instalarea dintr-un
Pag. 14
În consola text a mașinii virtuale se pot vedea containerele care sunt pornite automat:
Pag. 15
Se poate crea manual un HMI particularizat, prin modificarea paginii implicite și a unui
nou director părinte, de exemplu prin comanda următoare:
# conpot -w www/ -r index.html
De asemenea, se pot copia paginile de pe serverul web al unui HMI real prin utilizarea
unui crawler:
Pag. 19
Accesările paginii implicite vor fi redirectate către alt server, fără ca browserul să poată
face vreo diferență. Același lucru poate fi aplicat și la codurile returnate. De exemplu, în cazul
codului 404 (Not Found), toate cererile care nu pot fi gestionate de Conpot sunt transmise în
Pag. 20
mod secret la un alt sistem, care poate fi chiar un dispozitiv real, pentru o interacțiune mai
realistă. În acest fel, Conpot poate funcționa similar cu un honeywall.
(https://www.honeynet.org/projects/old/honeywall-cdrom/ )
În laborator s-au făcut câteva teste pentru modificarea paginii implicite afișate la
accesarea portului 80 deschis de honeypot.
În acest sens, s-a folosit shell-ul din containerul în care era pornit honeypot-ul:
docker exec -it -u root conpot_conpot_1 /bin/bash
S-a modificat fișierul care oferă pagina implicită:
/home/conpot/.local/lib/python3.8/site-
packages/conpot/templates/default/http/htdocs/index.html
Pag. 22
Astfel de pagini pot fi create și pe honeypot, astfel încât să simuleze cât mai mult un
HMI web real al unui echipament.
Se poate merge pe un scenariu în care paginile create pe honeypot sa fie statice – la
fiecare accesare se vor afișa aceleași valori/comenzi. Se pot face și pagini dinamice, care să
folosească un cod javascript, care să ofere valori pseudo -aleatorii la fiecare accesare. De
asemenea, se pot face redirectări de la anumite pagini către pagini de pe HMI-ul echipamentului
real, pentru o interacțiune cât mai realistă.
Pag. 23
CAPITOLUL 3: Descrierea funcționalităților, la nivel
de concept tehnologic și aplicativ al serverului de Syslog din
cadrul modulului/platformei ce colectează informații
despre motivele și metodele potențialilor atacatori ce
vizează sistemele infrastructurilor și proceselor critice.
Pentru colectarea tuturor jurnalelor legate de componentele honeypot-ului din cadrul
laboratorului, se propune utilizarea soluției syslog-ng (Syslog Next Generation). Aceasta
reprezintă evoluția firească a vechiului serviciu syslog.
Syslog-ng este o soluție de management a jurnalelor, ce îmbunătățește performanța unui
SIEM prin reducerea volumului de date și creșterea calității acestora, înainte de a fi trimise către
SIEM.
Syslog-ng funcționează într-un mod foarte flexibil, permițând de exemplu să primească
date de la mai multe surse și să trimită de asemenea date către mai multe destinații.
Având în vedere faptul că soluțiile de tip honeypot alese vor rula în containere Docker,
s-a ales ca și Syslog-ng să ruleze într-un container, pe aceeași mașină. Colectarea jurnalelor este
cu atât mai importantă într-un mediu bazat pe containere.
În acest sens, există o imagine oficială pe Docker Hub, construită de Balabit:
Pag. 24
Această imagine se bazează pe ultima versiune de Debian și pe ultima versiune stabilă
a syslog-ng.
Syslog-ng expune trei porturi prin care poate comunica cu alte sisteme:
• Syslog UDP: 514 – folosit și de vechiul server Syslog
• Syslog TCP: 601 – introdus de Syslog-ng
• Syslog TLS: 6514 – introdus de Syslog-ng
Aceste porturi sunt configurate în fișierul syslog-ng.conf .
Pentru pregătirea unui fișier de configurare folosit de syslog-ng în container și pentru a
stoca jurnalele acestuia în afara containerului, se va crea un o structură de directoare
data/syslog-ng/{conf,logs}. În subdirectorul conf se va copia fișierul de configurare syslog-
Pag. 25
În fereastra care afișează jurnalele înregistrate în container apar mesaje de felul următor:
Pag. 26
Preluarea jurnalelor din alte containere
Syslog-ng, rulat în container, poate prelua jurnalele altor containere. Spre exemplu, dacă
există un container numit conpot1, care are montat un volum în locația
/var/log/conpot/conpot.log, syslog-ng le poate procesa și apoi le poate trimite către o stație
remote (1.2.3.4:514).
source(s_apache);
destination(d_remote);
};
Pornirea containerului syslog-ng cu aceste setări se poate face în felul următor:
docker run -it --volumes-from conpot1 -v "$PWD/syslog-ng.conf":/etc/syslog-
ng/syslog-ng.conf balabit/syslog-ng:latest
Pag. 28
Concluzii
În acest studiu s-a prezentat particularizarea honeypot-ului Conpot, în scopul de a simula
dispozitive de tip PLC (Programmable Logic Controller) și a protocoalelor specifice acestora
(FTP, Modbus TCP, SNMP, Telnet). S-a încercat simularea efectivă a dispozitivului Simatic
S7-1200, care va fi folosit, de asemenea, în laborator.
S-a arătat instalarea și configurarea Conpot în cadrului a două containere Docker diferite
și a posibilităților de particularizare a dispozitivului simulat.
Conpot poate simula nu doar dispozitive de tip PLC, dar și HMI-uri. Astfel, s-a pornit
de la template-ul implicit oferit de acesta și s-au făcut câteva modificări, pentru a demonstra
ușurința cu care poate fi ajustat.
În final s-a prezentat soluția de colectare a jurnalelor generate de honeypot. Este vorba
despre syslog-ng, un utilitar de tehnologie nouă, foarte flexibil, care rulează de asemenea într-
un container Docker, pentru integrare mai ușoară cu celelalte containere în care rulează diferite
honeypot-uri, dar nu numai.
Ceea ce s-a demonstrat în acest studiu va putea fi implementat în cadrul laboratorului și
integrat cu modulele platformei NG STI-CERT.
Pag. 29
Referințe bibliografice
▪ Kyle Coffey, Richard Smith, Leandros Maglaras, Helge Janicke, ”Vulnerability
Analysis of Network Scanning on SCADA Systems” , De Montfort University,
Leicester, UK, 2018
▪ Wiberg, Kenneth, ”Identifying Supervisory Control and DataAcquisition
(SCADA) systems on a network viaremote reconnaissance”, C.Monterey,
California. Naval Postgraduate School, 2006
▪ Sagar Samtani, Shuo Yu, Hongyi Zhu, Mark Patton, Hsinchun Chen, ”
Identifying SCADA Vulnerabilities Using Passive and Active Vulnerability
Assessment Techniques”, The University of Arizona, Tucson, 2018
▪ Modbus-based Industrial Control System Attack:
http://cyberforensic.net/labs/modbus-attack.html
▪ Metasploit modules developed to demonstrate insecure by design PLC's as part
of Project Basecamp: https://github.com/digitalbond/Basecamp
▪ Industrial Exploitation Framework: https://github.com/dark-lbp/isf
▪ Industrial Control Systems Dynamic Code Injection:
https://grehack.fr/data/grehack2015/paper/Grehack%202015%20-
%20Paper%20-
%20Industrial%20Control%20Systems%20Dynamic%20Code%20Injection.pd
f
▪ Tool for scan PLC devices over s7comm or modbus protocols:
https://github.com/meeas/plcscan
▪ Conpot official documentation: https://conpot.readthedocs.io/en/latest/
▪ Docker Hub: https://hub.docker.com/
▪ Examples for the SIMATIC S7-1200/ S7-1500 Web Server:
https://cache.industry.siemens.com/dl/files/496/68011496/att_959527/v2/6801
1496_Examples_for_S7WebServer_DOC_v21_en.pdf
Pag. 30
▪ Syslog-ng: https://www.syslog-ng.com/
▪ Caught in the Act: Running a Realistic Factory Honeypot to Capture Real
Threats: https://documents.trendmicro.com/assets/white_papers/wp-caught-in-
the-act-running-a-realistic-factory-honeypot-to-capture-real-threats.pdf
Pag. 31