68 Commits

Author SHA1 Message Date
Andrew Rioux
eb5e86067b
feat: added ability to download files 2023-09-08 21:25:20 -04:00
Andrew Rioux
239c5ccc40
fix: made code compile for now 2023-09-07 12:56:30 -04:00
Andrew Rioux
cd23ec1b80
feat: continuing work on downloading files 2023-09-06 19:44:13 -04:00
Andrew Rioux
50b5c1a921
feat: added upload file capability 2023-09-06 14:56:21 -04:00
Andrew Rioux
231108f2c3
fix: swapped to just run the binary on the server
moved away from `sh -c`
2023-09-06 09:04:26 -04:00
Andrew Rioux
17e6056a03
fix: fixed stdin for processes
started work on upload file command
2023-09-06 00:07:15 -04:00
Andrew Rioux
9bb31ee6fa
feat: added the ability to run commands remotely
commands can now be sent and their outputs received
2023-09-05 19:58:40 -04:00
Andrew Rioux
52538ac7d7
feat: added the ability to send commands 2023-09-05 19:05:26 -04:00
Andrew Rioux
47b2191335
feat: working on spawning commands 2023-09-05 09:43:00 -04:00
Andrew Rioux
1e5f515a25
feat: adding packet handling to server 2023-09-04 19:10:43 -04:00
Andrew Rioux
fb43a27ba3
feat: added ip to sysinfo 2023-09-04 01:30:01 -04:00
Andrew Rioux
7f1f43a601
feat: added a basic interactivity to the client 2023-09-04 01:11:55 -04:00
Andrew Rioux
7876e00dc8
fix: improved the logic for generating binaries
cross platform logic wasn't handled well for generating linux binaries
on windows or vice versa
2023-09-02 23:59:28 -04:00
Andrew Rioux
81fb2ed548
feat: added windows support
factored out the packet parsing logic from libpcap

will probably come back to linking against libpcap in a later version
2023-09-02 23:09:05 -04:00
Andrew Rioux
4449a771e2
feat: added connection and authentication
client can now generate a server binary, and try to connect to it and
get capabilities
2023-09-02 22:29:13 -04:00
Andrew Rioux
cda6388596
feat: fleshed out handling a new connection 2023-09-02 16:58:25 -04:00
Andrew Rioux
d7a0deba0c
feat: added transport layers for sparse 0.5 target 2023-09-02 15:26:58 -04:00
Andrew Rioux
aecf1c9b80
feat: adding a bind shell example with more stuff
adding a bind shell that can allow for more practice with future
features such as multiple transports, encryption, transferring files,
and a more robust client interface
2023-09-02 14:32:34 -04:00
Andrew Rioux
180b29531a
feat: added setuid capabilities 2023-08-23 22:40:21 -04:00
Andrew Rioux
1517ca6f1c
fix: addressed edge cases for external routing 2023-08-17 18:18:05 -04:00
Andrew Rioux
b770d53f57
feat: added a way to specify port to listen on
the backdoor example always listened on port 54248 and did not allow for
configuration, but now it can be changed by passing in a command line argument
2023-05-28 15:17:09 -04:00
Andrew Rioux
bd31c6457d
feat: added a docker breakout feature
if the bind shell example is compiled with the right feature and is run
inside a(n) (im)properly configured Docker container, it is now able to
break out and run some commands on the host

for some reason, under this breakout mode, it runs a little weird with
networking commands, but does fine with file system or IPC based commands
2023-05-12 17:41:20 -04:00
Andrew Rioux
a03b50ead4
fix: added a default route for MAC addresses
there were issues with MAC addresses not having a valid route when it
couldn't find the right route
2023-05-12 17:33:22 -04:00
Andrew Rioux
5ab43a10fe
fix: fixing revshell example and its routes 2023-05-12 01:16:52 -04:00
Andrew Rioux
4123175eda
doc: converting org mode to markdown 2023-05-10 21:54:19 -04:00
Andrew Rioux
d5e78b5746
fix: made it so that the TERM variable is shared
now commands like clear work
2023-05-09 21:26:53 -04:00
Andrew Rioux
57cd4aa2be
docs: updated docs to use cargo make 2023-05-09 21:26:29 -04:00
Andrew Rioux
f1e5b2d979
refactor: redid the bindshell example
Made it use a single UDP client as well as proper randomized ports to go
through network firewalls, requiring stdin, status, stderr, and stdout
all go over a single UDP socket

Updated the client to have a prompt
2023-05-09 21:02:46 -04:00
Andrew Rioux
8ad7127d4d
feat: added the beginnings of sparse-protocol
sparse protocol allows for composing of different "protocols" at
runtime, and will allow for DNS and TCP as well as different TCP
protocols like HTTP
2023-05-09 10:34:03 -04:00
Andrew Rioux
968df54f59
build: added auto deleting of configure~ for git 2023-05-07 18:12:28 -04:00
Andrew Rioux
8aab9be638
build: made it so dev containers can partly debug
symbol tables appear to be messed up and it doesn't work with async
Rust, so will try to refactor the code to be sync and see how it fares
2023-05-07 14:17:28 -04:00
Andrew Rioux
813dc104e8
build: added git tasks to Makefile 2023-05-07 00:39:22 -04:00
Andrew Rioux
52e458296c
build: made it easier to build bind-shell 2023-05-07 00:08:04 -04:00
Andrew Rioux
318e1b6d05 build: added GitHub docs and workflows 2023-05-06 23:35:38 -04:00
Andrew Rioux
3257dfced0 build: adding to Cargo make config
Adding default tasks and setup task to run when container is made
2023-05-06 23:35:38 -04:00
Andrew Rioux
c984b9eb56 docs: removed extra comments 2023-05-06 23:35:38 -04:00
Andrew Rioux
f72aa6e98d refactor: changed workflow to use Ubuntu
replaced dev container Dockerfile with one which uses
Ubuntu instead of Alpine. The Docker in Docker feature only
works on Ubuntu, not Debian or Alpine, and the LLDB extension
to enable debugging only supports Debian/Ubuntu
2023-05-06 23:35:38 -04:00
Andrew Rioux
f3453f4399 fix: removing unneeded code 2023-05-06 23:35:38 -04:00
Andrew Rioux
0fe2c033b3 build: adding debugging to dev container 2023-05-06 23:35:33 -04:00
Andrew Rioux
978d7cb089 chore: run cargo fmt 2023-05-06 22:50:34 -04:00
Andrew Rioux
798eda764f refactor: removed debug code 2023-05-06 22:50:31 -04:00
Andrew Rioux
c142af62f1 fix: added forgotten error handling
AggregateInterface was lacking some special error handling for certain cases
2023-05-06 22:49:28 -04:00
Andrew Rioux
24dff10b6b feat: added AggregateInterface
AggregateInterface can be used to gather multiple libpcap interfaces
together in order to listen to all simultaneously and also selectively
send on different interfaces
2023-05-06 22:48:04 -04:00
Andrew Rioux
cfdf8f7e86 refactor: simplified route query code
fighting the borrow checker
2023-05-06 22:47:40 -04:00
Andrew Rioux
c16bf366b7 fix: fixed weird issues with querying routes
this just involved a better understanding of the data
types provided by libnl and some refactoring to make querying
as a user of the libnl library easier
2023-05-06 22:46:42 -04:00
Andrew Rioux
be5772fa23 build: actually added firewalls to test container
One of the more interesting selling points about this project is that it
works through local system firewalls on Linux (iptables, nf_tables)

This commit makes the testing environments in the docker containers
actually have to go up against a firewall, one which has a default
incoming and outgoing policy of drop
2023-05-06 22:45:47 -04:00
Andrew Rioux
1165d687ff docs: added basic documentation to libnl 2023-05-06 22:45:30 -04:00
Andrew Rioux
113a43ac41 refactor: cleaned up some code
there was an attempt to use libnl to look up addresses directly with
FIB_LOOKUP, and some of that code was left over. This commit cleans up
such leftover code
2023-05-06 22:44:40 -04:00
Andrew Rioux
04a529e32f build: added clippy in dev environment 2023-05-06 22:44:36 -04:00
Andrew Rioux
95b5f3ee82 feat: added basic wrapper around libnl 2023-05-06 22:44:31 -04:00