Implementazione di AbraWorm per il corso di Sicurezza e Privatezza, Bruschi @ Unimi Originale: Purdue University https://engineering.purdue.edu/kak/compsec/NewLectures/Lecture22.pdf
 
 
Go to file
Matteo Zoia 29a172eaec init 2023-11-07 10:40:28 +01:00
attacker/config init 2023-11-07 10:40:28 +01:00
user init 2023-11-07 10:40:28 +01:00
worm init 2023-11-07 10:40:28 +01:00
.gitignore init 2023-11-07 10:40:28 +01:00
.gitlab-ci.yml init 2023-11-07 10:40:28 +01:00
README.md init 2023-11-07 10:40:28 +01:00
docker-compose.yaml init 2023-11-07 10:40:28 +01:00

README.md

AbraWorm

Corso di Sicurezza e Privatezza @ Unimi

Passaggi per l'utilizzo

Testato su ubuntu

  • Installazione di docker e docker-compose https://docs.docker.com/engine/install/ubuntu/

  • Con il comando docker-compose up --force-recreate vengono scaricate le immagini di openssh-server (immagini minimali da circa 12MB). Vengono creati 2 container di nome openssh-server-attacker e openssh-server-user. Entrambi i container espongono la porta 2222 che viene rimappata sulla porta dell'host 22 per openssh-server-user e 12345 per openssh-server-attacker. Ora la macchina dello studente avrá due porte esposte 22 e 12345, si puó vedere con netstat -tulpn | grep LISTEN

teozoia@teozoia-blade:~/Desktop/abraworm/abraworm/worm$ netstat -tulpn | grep LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -     
tcp        0      0 0.0.0.0:12345           0.0.0.0:*               LISTEN      -
...     
  • Come dichiarato all'interno del file docker-compose.yaml al rispettivo container verrá montata la cartella user/config e attacker/config; da notare che in user/config é presente il file text.txt il quale contiene la parola abracadabra.

  • Per testare il funzionamento dei due container é possibile collegarsi al container user con ssh user@127.0.0.1 (password: password) e attacker con ssh seed@127.0.0.1 -p 12345 (password: dees).

  • É possibile eseguire il worm sulla propria macchina python3 AbraWorm.py. Se si vuole velocizzare il processo é possibile togliere il while e fare in modo che le funzioni get_password_list() e get_user_list() ritornino una lista fissata non lunga. Per usare il worm in modo verboso é necessario che DEBUG=1.

teozoia@teozoia-blade:~/Desktop/abraworm/abraworm/worm$ python3 AbraWorm.py 
user@127.0.0.1 -> adjfhfad
Exception catched: Authentication failed.
user@127.0.0.1 -> dhf931f
Exception catched: Authentication failed.
matteo@127.0.0.1 -> idhf
Exception catched: Authentication failed.
user@127.0.0.1 -> password
Connected user@127.0.0.1 -> password
[user@127.0.0.1] executing: ls
        stdout:['AbraWorm.py\n', 'logs\n', 'ssh_host_keys\n', 'sshd.pid\n', 'test.txt\n']
Target user@127.0.0.1 already infected
[user@127.0.0.1] executing: grep -ls abracadabra *
        stdout:['AbraWorm.py\n', 'test.txt\n']
Files of interest at the target: ['AbraWorm.py', 'test.txt']
Will now try to exfiltrate the files
Connected to exhiltration host

Docker install

https://docs.docker.com/engine/install/ubuntu/

  • sudo apt-get remove docker docker-engine docker.io containerd runc
  • sudo apt-get update
  • sudo apt-get install ca-certificates curl gnupg lsb-release
  • sudo mkdir -p /etc/apt/keyrings
  • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • sudo apt-get update
  • sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin