Network Security and digital surveillance are becoming an ongoing progression in the digital realm. Raytheon drones are known for many things, including the fact that you can watch things via the attached camera. Video surveillance is important in the world, but as technology progressions, as should we with it. Let's take a step towards such a concept.

What it does:

The framework of programs that will, in the future, be attached to a Raytheon Drone equipped with a powerful Wireless Adapter/Network Security Key Cracker. The drones would fly within Network range of the IP that warrants such surveillance, crack into that network and plant the program "Raycaster" into the remote machine. It will then connect to a Server called "Scion" and let a plethora of surveillance, and even some control, over that remote machine. It affords the user many things including constant video stream of the remote machine's desktop, allows full navigation of the machine's C:/ Drive with access to uploading, downloading, previewing, deleting, and even opening files on the remote machine. The user is also afforded a direct command line script that runs a stealthed Command Prompt on the remote machine, runs commands into it, and returns the feedback to the user, offering an even greater level of control. While the Scion Server has a clean Graphical User Interface with plenty of UI options, the Raycaster counter program is completely stealthed and isn't detected as an active process on the remote machine. In it's current state, it does not utilize drones nor the wireless breaching that was mentioned, however the program is fully functional and can be ran and treated as if those steps were already complete.

How I built it

Utilizing Java Sockets as well as something I call "Command Tags" which, when dealing with a program like this, are tags used at the beginning of strings sent via Client-Server connections to tell what's about to be sent and how to handle it. It's written in Java, which is detrimental to a program as this as Java operates in a JVM, meaning I could not attach a keylogger directly to the remote machine as the keylisteners only read keys that are typed in the JVM itself. As programming skills in other languages progress, so will this program and it's capabilities. Multiple Sockets going back and forth on two seperates programs are a key function to achieving so many different functions at once. I.E live video stream on one port, while transferring files covertly on another.

Challenges I ran into

Threads were a big deal in the beginning, and was synchronization. Once that was down, it was all about syncing my command line tags from client to server to allow fluent communication. The video stream was rough, because it's nested inside of a nice little "for" loop. It takes a screenshot of the remote machine every 75 milliseconds and streams it across server, which is then set as the image in the "screen window" of the Scion GUI. I'd imagine this is a very inefficient way of doing things and I'm sure better ways to accomplish this exist, however, streaming a screen didn't seem to be a common function in Java and this was the best workaround I could manage. More time would allow more proficient and effective code with less processing power.

Accomplishments that I'm proud of

Getting this program to work honestly. I have a very small amount of schooling in computer science, however I have been self taught for a couple years now. So seeing the GUI work and Java sockets come together, while working with threads and synchronization was something I was proud of when making this. Coding is something that I am truly passionate about, and seeing my work come to live really makes me feel like one day, I'll make a difference in the world. Be the change that I want to be.

What I learned

Synchronization is a pretty big deal when dealing with concurrent threading. Running multiple threads is a big deal in general. When dealing with sockets, it's important to understand that in order for a file to be transferred, you must close the socket and the input streams otherwise it wont transfer bytes correctly. When making a GUI, JLabels are your best friend. And when things get tough, a couple red bulls will help you pull through.

What's next for Rayconaissance

A lot more payloads and control over the remote machine, including a stream of the webcam, audio stream, and control over the mouse. A keylogger will also be implemented with filters for keylogging, when it streams desktop/webcam/audio, and a rootkit to be implemented so once it's ran once, it will forever run on startup on the remote machine.

Built With

Share this project:

Updates