Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
ce3f460
fixed string encode/decode errors and updated the package version as …
shasan101 Feb 11, 2025
11b3497
so far only types for generics introduced
shasan101 Feb 11, 2025
753a0a9
introduced types for generics and called the initialize() func in the…
shasan101 Feb 11, 2025
cc288f6
added types to classes dealing with reading the input alphabet(s) fro…
shasan101 Feb 11, 2025
49dcc9e
introduced types to generics and added contructor code before the int…
shasan101 Feb 12, 2025
6571e18
added types for generics and implemented the required override funcs
shasan101 Feb 12, 2025
2efe652
reformatting from the ide
shasan101 Feb 12, 2025
a1989ba
committing the placeholder classes created in trying to get rid of th…
shasan101 Feb 12, 2025
7e418ac
dockerfile for the ssh-mapper
shasan101 Feb 21, 2025
ca82340
added the missing and required SshOutputBuilder class to deal with th…
shasan101 Feb 21, 2025
f323c99
added all the docker related files and also the temp ssh-keys that ca…
shasan101 Feb 21, 2025
2178018
added change to the mapper
shasan101 Feb 21, 2025
e9096b8
added jcommander param to decide whether to run mealy learner or ra l…
shasan101 Feb 21, 2025
c151b4c
fmt pom.xml. minor change in sshMapper
shasan101 Feb 21, 2025
de8395c
revereted the change in mapper.py
shasan101 Feb 21, 2025
1689b55
remved ssh keys. will introduce a script to automate their creation a…
shasan101 Feb 21, 2025
40414a0
added script to generate ssh key at runtime so that the keys are not …
shasan101 Feb 21, 2025
a09e9b4
Merge branch 'assist-project:main' into main
shasan101 Feb 26, 2025
48c3207
first attempt at trying to introduce gh workflow.
shasan101 Feb 27, 2025
8ca47da
limiting the learner rounds. added diff checker script - took it form…
shasan101 Feb 27, 2025
673de73
fixed workflow yaml file
shasan101 Feb 27, 2025
9906a63
more syntax errors
shasan101 Feb 27, 2025
b124460
made scripts executable
shasan101 Feb 27, 2025
f66ba58
fixed docker-compose file name. fixed the ssh-keys dir
shasan101 Feb 27, 2025
d76e88a
compose error with container name
shasan101 Feb 27, 2025
bea2d13
run containers as daemon to see if we can run the last stage
shasan101 Feb 27, 2025
180d2f5
creating the output dir for experiments in the script
shasan101 Feb 27, 2025
08f5bd7
the diff script needs the abs path maybe
shasan101 Feb 27, 2025
cda9d48
experimenting with the script
shasan101 Feb 27, 2025
6023c8f
removed the worng check
shasan101 Feb 27, 2025
27ad592
checking dirs at the final stage
shasan101 Feb 27, 2025
7a337fe
need to look at the contents of the learner output dir
shasan101 Feb 27, 2025
6a2cc4f
checking docker cmd
shasan101 Feb 27, 2025
0151694
wait for the learning container to finish
shasan101 Feb 27, 2025
0dc9836
- removed the ssh keys from inside the container. Only mounting from …
shasan101 Mar 5, 2025
d48c52d
moved all the docker related files to a separate dir. updated the scr…
shasan101 Mar 6, 2025
bed7ab2
test the changes with just dropbear
shasan101 Mar 6, 2025
2353fbf
removed unused stage
shasan101 Mar 6, 2025
8ee8eef
fix typo
shasan101 Mar 6, 2025
dc7f9ea
fix typo
shasan101 Mar 6, 2025
8b8d495
found that this os should have the docker-compose preinstalled
shasan101 Mar 6, 2025
fd9b2ca
changed the checkout runner
shasan101 Mar 6, 2025
ec7692d
testing ci
shasan101 Mar 6, 2025
cb29088
testing
shasan101 Mar 6, 2025
86b3244
using docker compose
shasan101 Mar 6, 2025
8d9ca12
- added ci step for openssh server learning.
shasan101 Mar 6, 2025
898a283
running the containers as daemon so that we can conclude the tests on…
shasan101 Mar 7, 2025
71c7869
fixed mapped dir name for openssh
shasan101 Mar 7, 2025
6a3578d
added separate dockerfile and docker-compose for openssh 7. updated t…
shasan101 Mar 13, 2025
3d245a8
fixed e2e tests for openssh8
shasan101 Mar 13, 2025
d311438
running dropbear experiment for only 3 rounds and not 6
shasan101 Mar 13, 2025
4977335
reverted the commented section for key verification
shasan101 Mar 13, 2025
681a054
just running another build
shasan101 Mar 13, 2025
9f73800
openssh8 only producing 2 hypothesis with roundlimit of 3
shasan101 Mar 13, 2025
df91337
Update openssh.xml
kostis May 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions .github/workflows/e2e_pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: CI for ssh-mapper
on: [push, pull_request]

jobs:
ssh-mapper-dropbear-server:
if: ${{ !contains(github.event.head_commit.message, 'ci skip') }}
runs-on: ubuntu-latest
# strategy:
# fail-fast: true
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Start learning DropbearSSH server
run: cd experiments/scripts/ && ./start_experiment.sh dropbear

- name: Verify Result
run: |
# wait for the learning to be over
while [ "$( docker container inspect -f '{{.State.Running}}' dropbear-learner )" = "true" ]; do date; echo "still learning"; sleep 5; done
experiments/scripts/diff_hyps.sh experiments/results/servers/dropbear experiments/orchestration/learner_output_dropbear 3

ssh-mapper-openssh7-server:
if: ${{ !contains(github.event.head_commit.message, 'ci skip') }}
runs-on: ubuntu-latest
# strategy:
# fail-fast: true
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Start learning OpenSSH7 server
run: cd experiments/scripts/ && ./start_experiment.sh openssh7

- name: Verify Result
run: |
# wait for the learning to be over
while [ "$( docker container inspect -f '{{.State.Running}}' openssh-learner7 )" = "true" ]; do date; echo "still learning"; sleep 5; done
experiments/scripts/diff_hyps.sh experiments/results/servers/openssh7 experiments/orchestration/learner_output_openssh7 3

ssh-mapper-openssh8-server:
if: ${{ !contains(github.event.head_commit.message, 'ci skip') }}
runs-on: ubuntu-latest
# strategy:
# fail-fast: true
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Start learning OpenSSH8 server
run: cd experiments/scripts/ && ./start_experiment.sh openssh8

- name: Verify Result
run: |
# wait for the learning to be over
while [ "$( docker container inspect -f '{{.State.Running}}' openssh-learner8 )" = "true" ]; do date; echo "still learning"; sleep 5; done
experiments/scripts/diff_hyps.sh experiments/results/servers/openssh8 experiments/orchestration/learner_output_openssh8 2
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,5 @@ ssh-mapper/paramiko.egg-info/**
ssh-mapper/build/**
ssh-mapper/dist/**
ssh-mapper/mapper/__pycache__/**
ssh-learner/target/**
ssh-learner/target/**
__pycache__/
51 changes: 0 additions & 51 deletions docker-compose.yaml

This file was deleted.

52 changes: 52 additions & 0 deletions experiments/orchestration/docker-compose-dropbear.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
version: "3.8"

services:
dropbear-ssh:
build:
context: .
dockerfile: dockerfiles/Dockerfile.dropbear
container_name: dropbear-ssh
ports:
- "2222:22"
networks:
- dropbear_network
volumes:
- ./ssh-keys/learner-ssh.pub:/root/.ssh/id_rsa.pub:ro
- ./ssh-keys/learner-ssh:/root/.ssh/id_rsa:ro
entrypoint: ["sh", "-c", "cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys && /usr/local/sbin/dropbear -F -E -j -k -s"]


dropbear-mapper:
build:
context: ../../ssh-mapper
dockerfile: Dockerfile
container_name: dropbear-mapper
# ports:
# - "8080:8080"
depends_on:
- dropbear-ssh
networks:
- dropbear_network
volumes:
- ./ssh-keys/learner-ssh.pub:/root/.ssh/id_rsa.pub:ro
- ./ssh-keys/learner-ssh:/root/.ssh/id_rsa:ro
command: -l 0.0.0.0:8080 -s dropbear-ssh:22 -f server

dropbear-learner:
build:
context: ../../ssh-learner
dockerfile: Dockerfile
container_name: dropbear-learner
networks:
- dropbear_network
depends_on:
- dropbear-ssh
- dropbear-mapper
volumes:
- ./learner_output_dropbear:/app/output_folder
- ../../ssh-learner/inputs/alphabets/servers/:/app/inputs/alphabets/servers/
command: ["state-fuzzer-server", "-connect", "dropbear-mapper:8080", "-alphabet", "/app/inputs/alphabets/servers/trans_auth.xml", "-output", "/app/output_folder", "-sshMapperAddress", "dropbear-mapper:8080", "-roundLimit", "3", "-debug"]

networks:
dropbear_network:
driver: bridge
52 changes: 52 additions & 0 deletions experiments/orchestration/docker-compose-openssh7.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
version: "3.8"

services:
openssh-server7:
build:
context: .
dockerfile: dockerfiles/Dockerfile.openssh7
container_name: openssh-server7
# ports:
# - "2222:22"
networks:
- openssh_network7
volumes:
- ./ssh-keys/learner-ssh.pub:/root/.ssh/id_rsa.pub:ro
- ./ssh-keys/learner-ssh:/root/.ssh/id_rsa:ro
entrypoint: ["sh", "-c", "cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys && /usr/sbin/sshd -D -e"]


openssh-mapper7:
build:
context: ../../ssh-mapper
dockerfile: Dockerfile
container_name: openssh-mapper7
# ports:
# - "8080:8080"
depends_on:
- openssh-server7
networks:
- openssh_network7
volumes:
- ./ssh-keys/learner-ssh.pub:/root/.ssh/id_rsa.pub:ro
- ./ssh-keys/learner-ssh:/root/.ssh/id_rsa:ro
command: -l 0.0.0.0:8080 -s openssh-server7:22 -c OpenSSH -f server

openssh-learner7:
build:
context: ../../ssh-learner
dockerfile: Dockerfile
container_name: openssh-learner7
networks:
- openssh_network7
depends_on:
- openssh-server7
- openssh-mapper7
volumes:
- ./learner_output_openssh7:/app/output_folder
- ../../ssh-learner/inputs/alphabets/servers/:/app/inputs/alphabets/servers/
command: ["state-fuzzer-server", "-connect", "openssh-mapper7:8080", "-alphabet", "/app/inputs/alphabets/servers/trans_auth.xml", "-output", "/app/output_folder", "-sshMapperAddress", "openssh-mapper7:8080","-debug", "-roundLimit", "3"]

networks:
openssh_network7:
driver: bridge
52 changes: 52 additions & 0 deletions experiments/orchestration/docker-compose-openssh8.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
version: "3.8"

services:
openssh-server8:
build:
context: .
dockerfile: dockerfiles/Dockerfile.openssh8
container_name: openssh-server8
# ports:
# - "2222:22"
networks:
- openssh_network8
volumes:
- ./ssh-keys/learner-ssh.pub:/root/.ssh/id_rsa.pub:ro
- ./ssh-keys/learner-ssh:/root/.ssh/id_rsa:ro
entrypoint: ["sh", "-c", "cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys && /usr/sbin/sshd -D -e"]


openssh-mapper8:
build:
context: ../../ssh-mapper
dockerfile: Dockerfile
container_name: openssh-mapper8
# ports:
# - "8080:8080"
depends_on:
- openssh-server8
networks:
- openssh_network8
volumes:
- ./ssh-keys/learner-ssh.pub:/root/.ssh/id_rsa.pub:ro
- ./ssh-keys/learner-ssh:/root/.ssh/id_rsa:ro
command: -l 0.0.0.0:8080 -s openssh-server8:22 -c OpenSSH -f server

openssh-learner8:
build:
context: ../../ssh-learner
dockerfile: Dockerfile
container_name: openssh-learner8
networks:
- openssh_network8
depends_on:
- openssh-server8
- openssh-mapper8
volumes:
- ./learner_output_openssh8:/app/output_folder
- ../../ssh-learner/inputs/alphabets/servers/:/app/inputs/alphabets/servers/
command: ["state-fuzzer-server", "-connect", "openssh-mapper8:8080", "-alphabet", "/app/inputs/alphabets/servers/trans_auth.xml", "-output", "/app/output_folder", "-sshMapperAddress", "openssh-mapper8:8080","-debug", "-roundLimit", "3"]

networks:
openssh_network8:
driver: bridge
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,7 @@ RUN dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key && \
# Set Dropbear server to run on port 22 (override in `docker run -p`)
EXPOSE 22

COPY ssh-keys/learner-ssh.pub .

RUN mkdir ~/.ssh; cat learner-ssh.pub >> ~/.ssh/authorized_keys
RUN mkdir ~/.ssh; chmod 700 ~/.ssh

# Command to run Dropbear SSH server
CMD ["/usr/local/sbin/dropbear", "-F", "-E", "-j", "-k", "-s"]
Expand Down
16 changes: 16 additions & 0 deletions experiments/orchestration/dockerfiles/Dockerfile.openssh7
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
FROM ubuntu:bionic

USER root

RUN apt-get update && apt-get install -y systemd openssh-server sudo vim

RUN mkdir /run/sshd

RUN echo "LogLevel DEBUG3" >> /etc/ssh/sshd_config

RUN echo "KexAlgorithms +curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1" >> /etc/ssh/sshd_config && \
echo "PubkeyAcceptedKeyTypes=+ssh-rsa" >> /etc/ssh/sshd_config

RUN systemctl enable ssh

CMD ["/usr/sbin/sshd", "-D", "-e"]
16 changes: 16 additions & 0 deletions experiments/orchestration/dockerfiles/Dockerfile.openssh8
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
FROM ubuntu:focal

USER root

RUN apt-get update && apt-get install -y systemd openssh-server sudo vim

RUN mkdir /run/sshd

RUN echo "LogLevel DEBUG3" >> /etc/ssh/sshd_config

RUN echo "KexAlgorithms +curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1" >> /etc/ssh/sshd_config && \
echo "PubkeyAcceptedKeyTypes=+ssh-rsa" >> /etc/ssh/sshd_config

RUN systemctl enable ssh

CMD ["/usr/sbin/sshd", "-D", "-e"]
10 changes: 10 additions & 0 deletions experiments/results/servers/dropbear/alphabet.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<alphabet>
<!-- -->
<SshInput name="KEXINIT" />
<SshInput name="KEX30" />
<SshInput name="NEWKEYS" />
<SshInput name="SR_AUTH" />
<SshInput name="SR_CONN" />
<SshInput name="UA_PK_OK" />
<SshInput name="UA_PK_NOK" />
</alphabet>
11 changes: 11 additions & 0 deletions experiments/results/servers/dropbear/command.args
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
state-fuzzer-server
-connect
ssh-mapper:8080
-alphabet
/app/inputs/alphabets/servers/trans_auth.xml
-output
/app/output_folder
-sshMapperAddress
ssh-mapper:8080
-roundLimit
3
15 changes: 15 additions & 0 deletions experiments/results/servers/dropbear/hyp1.dot
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
digraph g {

s0 [shape="circle" label="s0"];
s0 -> s0 [label="KEXINIT / KEXINIT"];
s0 -> s0 [label="KEX30 / KEXINIT+UNIMPL"];
s0 -> s0 [label="NEWKEYS / KEXINIT+UNIMPL"];
s0 -> s0 [label="SR_AUTH / KEXINIT"];
s0 -> s0 [label="SR_CONN / KEXINIT"];
s0 -> s0 [label="UA_PK_OK / KEXINIT"];
s0 -> s0 [label="UA_PK_NOK / KEXINIT"];

__start0 [label="" shape="none" width="0" height="0"];
__start0 -> s0;

}
Loading