mirror of
https://github.com/nixpal/shellsilo
synced 2026-06-06 16:24:28 +00:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
|
||||
|
||||
dataTypes = {
|
||||
"PWSTR":0x4,
|
||||
"PVOID":0x4,
|
||||
"PWCHAR":0x4,
|
||||
"PSIZE_T":0x4,
|
||||
"HANDLE":0x4,
|
||||
"SIZE_T":0x4,
|
||||
"UCHAR":0x1,
|
||||
"USHORT":0x2,
|
||||
"BYTE":0x1,
|
||||
"ULONG":0x4,
|
||||
"ULONG_PTR":0x4,
|
||||
"SIZE_T":0x4,
|
||||
"NTSTATUS":0x4,
|
||||
"DWORD":0x4,
|
||||
"KPRIORITY":0x4,
|
||||
"ACCESS_MASK":0x4}
|
||||
|
||||
specialVars = {"GetCurrentProcess()":hex(0xffffffff),
|
||||
"MEM_COMMIT":hex(0x1000),
|
||||
"MEM_RESERVE":hex(0x2000),
|
||||
"MEM_RELEASE":hex(0x8000),
|
||||
"PAGE_EXECUTE_READWRITE":hex(0x40),
|
||||
"PAGE_READWRITE":hex(0x4),
|
||||
"PAGE_READONLY":hex(0x2),
|
||||
"PROCESS_ALL_ACCESS":hex(0x1fffff),
|
||||
"THREAD_ALL_ACCESS":hex(0x001FFFFF),
|
||||
"False":hex(0x0),
|
||||
"True":hex(0x1),
|
||||
"NTSTATUS":"NULL",
|
||||
"NULL":hex(0x0)}
|
||||
|
||||
|
||||
sysCalls = {"NtAllocateVirtualMemory":{"10":["0018"],
|
||||
"11":["0018"]
|
||||
},
|
||||
"NtQuerySystemInformation":{"10":["0036"],
|
||||
"11":["0167" ,"0169", "016c", "016c", "016d"]
|
||||
},
|
||||
"NtOpenProcess":{"10":["0026"],
|
||||
"11":["0029"]
|
||||
},
|
||||
"NtWriteVirtualMemory":{"10":["003A"],
|
||||
"11":["0030"]
|
||||
},
|
||||
"NtCreateThreadEx":{"10":["00b3","00b4","00b6","00b9","00ba","00bb","00bc","00bd","00bd","00c1","00c1","00c1","00c2","00c2"],
|
||||
"11":["00c5","00c6","00c7","00c7","00c8"]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
#include <Windows.h>
|
||||
#include <iostream>
|
||||
|
||||
// Define necessary structures and types
|
||||
|
||||
typedef struct _UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
|
||||
|
||||
<MAIN>
|
||||
{
|
||||
|
||||
DWORD test = 10;
|
||||
DWORD test2 = 12;
|
||||
while(TRUE){
|
||||
if (test == test2){
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
#include <Windows.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// Define NTDLL function prototypes
|
||||
typedef struct _UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
typedef struct _OBJECT_ATTRIBUTES {
|
||||
ULONG Length;
|
||||
HANDLE RootDirectory;
|
||||
PUNICODE_STRING ObjectName;
|
||||
ULONG Attributes;
|
||||
PVOID SecurityDescriptor;
|
||||
PVOID SecurityQualityOfService;
|
||||
} OBJECT_ATTRIBUTES;
|
||||
|
||||
typedef struct _CLIENT_ID {
|
||||
HANDLE UniqueProcess;
|
||||
HANDLE UniqueThread;
|
||||
} CLIENT_ID;
|
||||
|
||||
<MAIN>
|
||||
{
|
||||
|
||||
HANDLE processHandle = GetCurrentProcess();
|
||||
PVOID remoteAddress = NULL;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes = { 0 };
|
||||
CLIENT_ID ClientId;
|
||||
ClientId.UniqueProcess = 8888;
|
||||
NTSTATUS status;
|
||||
HANDLE hProcess = NULL;
|
||||
DWORD DesiredAccess = PROCESS_ALL_ACCESS;
|
||||
DWORD allocationSize = 1024;
|
||||
status = NtOpenProcess(
|
||||
&hProcess,
|
||||
DesiredAccess,
|
||||
&ObjectAttributes,
|
||||
&ClientId
|
||||
);
|
||||
|
||||
status = NtAllocateVirtualMemory(hProcess,
|
||||
&remoteAddress,
|
||||
0,
|
||||
&allocationSize,
|
||||
MEM_COMMIT | MEM_RESERVE,
|
||||
PAGE_READWRITE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
#include <Windows.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// Define NTDLL function prototypes
|
||||
typedef struct _UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
typedef struct _OBJECT_ATTRIBUTES {
|
||||
ULONG Length;
|
||||
HANDLE RootDirectory;
|
||||
PUNICODE_STRING ObjectName;
|
||||
ULONG Attributes;
|
||||
PVOID SecurityDescriptor;
|
||||
PVOID SecurityQualityOfService;
|
||||
} OBJECT_ATTRIBUTES;
|
||||
|
||||
typedef struct _CLIENT_ID {
|
||||
HANDLE UniqueProcess;
|
||||
HANDLE UniqueThread;
|
||||
} CLIENT_ID;
|
||||
|
||||
<MAIN>
|
||||
{
|
||||
|
||||
NTSTATUS status;
|
||||
PVOID address = NULL;
|
||||
SIZE_T size = 4096;
|
||||
NtAllocateVirtualMemory(GetCurrentProcess(), &address, 0, &size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||
NtWriteVirtualMemoty(
|
||||
return 0;
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
#include <Windows.h>
|
||||
#include <iostream>
|
||||
|
||||
// Define necessary structures and types
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<MAIN>
|
||||
{
|
||||
|
||||
PVOID BaseAddress = NULL;
|
||||
ULONG NumberOfBytesWritten = 0;
|
||||
SIZE_T RegionSize = 0x2000;
|
||||
DWORD ZeroBits = 0;
|
||||
HANDLE hProcess = GetCurrentProcess();
|
||||
NtAllocateVirtualMemory(hProcess, &BaseAddress, ZeroBits, &RegionSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE)
|
||||
PVOID buffer = "Hello";
|
||||
ULONG NumberOfBytesToWrite = sizeof(buffer);
|
||||
NtWriteVirtualMemory(hProcess, BaseAddress, buffer, NumberOfBytesToWrite, &NumberOfBytesWritten);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
#include <Windows.h>
|
||||
#include <iostream>
|
||||
|
||||
// Define necessary structures and types
|
||||
|
||||
typedef struct _UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
|
||||
|
||||
<MAIN>
|
||||
{
|
||||
|
||||
DWORD test = 10;
|
||||
while(TRUE){
|
||||
if (test <= 12){
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
#include <Windows.h>
|
||||
#include <iostream>
|
||||
|
||||
// Define necessary structures and types
|
||||
|
||||
typedef struct _UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
typedef struct _OBJECT_ATTRIBUTES {
|
||||
ULONG Length;
|
||||
HANDLE RootDirectory;
|
||||
PUNICODE_STRING ObjectName;
|
||||
ULONG Attributes;
|
||||
PVOID SecurityDescriptor;
|
||||
PVOID SecurityQualityOfService;
|
||||
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
|
||||
|
||||
|
||||
typedef struct _CLIENT_ID {
|
||||
HANDLE UniqueProcess;
|
||||
HANDLE UniqueThread;
|
||||
} CLIENT_ID, *PCLIENT_ID;
|
||||
|
||||
|
||||
|
||||
<MAIN>
|
||||
{
|
||||
|
||||
DWORD targetProcessId = 5244;
|
||||
|
||||
CLIENT_ID clientId = NULL;
|
||||
|
||||
OBJECT_ATTRIBUTES ObjectAttributes = { 0 };
|
||||
clientId.UniqueProcess = targetProcessId;
|
||||
clientId.UniqueThread = NULL;
|
||||
|
||||
HANDLE hProcess = NULL;
|
||||
NtOpenProcess(&hProcess, PROCESS_ALL_ACCESS, &ObjectAttributes, &clientId);
|
||||
PVOID remoteBuffer = NULL;
|
||||
SIZE_T bufferSize = 4096;
|
||||
ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES)
|
||||
PVOID mystr = "Hello, World!";
|
||||
ULONG numOfBytesWritten = 0;
|
||||
|
||||
NtAllocateVirtualMemory(hProcess, &remoteBuffer, 0, &bufferSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
|
||||
NtWriteVirtualMemory(hProcess, remoteBuffer, dataToWrite, 13, &numOfBytesWritten);
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
#include <Windows.h>
|
||||
#include <iostream>
|
||||
|
||||
// Define necessary structures and types
|
||||
|
||||
typedef struct _UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
hidden struct _SYSTEM_PROCESS_INFORMATION {
|
||||
ULONG NextEntryOffset;
|
||||
ULONG NumberOfThreads;
|
||||
BYTE Reserved1[48];
|
||||
PUNICODE_STRING ImageName;
|
||||
KPRIORITY BasePriority;
|
||||
HANDLE UniqueProcessId;
|
||||
PVOID Reserved2;
|
||||
ULONG HandleCount;
|
||||
ULONG SessionId;
|
||||
PVOID Reserved3;
|
||||
SIZE_T PeakVirtualSize;
|
||||
SIZE_T VirtualSize;
|
||||
ULONG Reserved4;
|
||||
SIZE_T PeakWorkingSetSize;
|
||||
SIZE_T WorkingSetSize;
|
||||
PVOID Reserved5;
|
||||
SIZE_T QuotaPagedPoolUsage;
|
||||
PVOID Reserved6;
|
||||
SIZE_T QuotaNonPagedPoolUsage;
|
||||
SIZE_T PagefileUsage;
|
||||
SIZE_T PeakPagefileUsage;
|
||||
SIZE_T PrivatePageCount;
|
||||
LARGE_INTEGER Reserved7[6];
|
||||
} SYSTEM_PROCESS_INFORMATION;
|
||||
|
||||
typedef struct _OBJECT_ATTRIBUTES {
|
||||
ULONG Length;
|
||||
HANDLE RootDirectory;
|
||||
PUNICODE_STRING ObjectName;
|
||||
ULONG Attributes;
|
||||
PVOID SecurityDescriptor;
|
||||
PVOID SecurityQualityOfService;
|
||||
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
|
||||
|
||||
|
||||
typedef struct _CLIENT_ID {
|
||||
HANDLE UniqueProcess;
|
||||
HANDLE UniqueThread;
|
||||
} CLIENT_ID, *PCLIENT_ID;
|
||||
|
||||
|
||||
|
||||
<MAIN>
|
||||
{
|
||||
|
||||
UNICODE_STRING NtImagePath;
|
||||
CLIENT_ID clientId = NULL;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes = { 0 };
|
||||
clientId.UniqueThread = NULL;
|
||||
ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
|
||||
PVOID BaseAddress = NULL;
|
||||
ULONG NumberOfBytesWritten = 0;
|
||||
SIZE_T RegionSize = 0x2000;
|
||||
DWORD p = NULL;
|
||||
DWORD ZeroBits = 0;
|
||||
DWORD dwRet = NULL;
|
||||
NTSTATUS dwStatus = NULL;
|
||||
DWORD SystemProcessInformation = 0x5;
|
||||
DWORD nextEntry = 0;
|
||||
DWORD imageName = 0;
|
||||
DWORD newBaseAddress = 0;
|
||||
DWORD processId = 0;
|
||||
while(TRUE){
|
||||
NtAllocateVirtualMemory(GetCurrentProcess(), &BaseAddress, ZeroBits, &RegionSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE)
|
||||
dwStatus = NtQuerySystemInformation(SystemProcessInformation, BaseAddress, RegionSize, &dwRet);
|
||||
if (dwStatus == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
dwRet += 0x2000;
|
||||
RegionSize = dwRet;
|
||||
BaseAddress = 0;
|
||||
}
|
||||
|
||||
newBaseAddress = BaseAddress;
|
||||
while(TRUE){
|
||||
nextEntry = (SYSTEM_PROCESS_INFORMATION)newBaseAddress->NextEntryOffset;
|
||||
if (nextEntry == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
newBaseAddress += nextEntry;
|
||||
imageName = (SYSTEM_PROCESS_INFORMATION)newBaseAddress->ImageName->Buffer;
|
||||
InitUnicodeStr(NtImagePath, "CrypTool.exe");
|
||||
if (imageName == NtImagePath)
|
||||
{
|
||||
processId = (SYSTEM_PROCESS_INFORMATION)newBaseAddress->UniqueProcessId;
|
||||
break;
|
||||
}
|
||||
}
|
||||
HANDLE hProcess = NULL;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes = { 0 };
|
||||
CLIENT_ID ClientId;
|
||||
ClientId.UniqueProcess = processId;
|
||||
NtOpenProcess(&hProcess, PROCESS_ALL_ACCESS, &ObjectAttributes, &ClientId);
|
||||
BaseAddress = 0;
|
||||
NtAllocateVirtualMemory(hProcess, &BaseAddress, ZeroBits, &RegionSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||
PVOID buffer = "h";
|
||||
ULONG NumberOfBytesToWrite = sizeof(buffer);
|
||||
NtWriteVirtualMemory(hProcess, BaseAddress, buffer, NumberOfBytesToWrite, &NumberOfBytesWritten);
|
||||
HANDLE ThreadHandle = NULL;
|
||||
NtCreateThreadEx(&ThreadHandle, 0x1FFFFF, NULL, hProcess, BaseAddress, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
#include <Windows.h>
|
||||
#include <iostream>
|
||||
|
||||
// Define necessary structures and types
|
||||
|
||||
typedef struct _UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
hidden struct _SYSTEM_PROCESS_INFORMATION {
|
||||
ULONG NextEntryOffset;
|
||||
ULONG NumberOfThreads;
|
||||
BYTE Reserved1[48];
|
||||
PUNICODE_STRING ImageName;
|
||||
KPRIORITY BasePriority;
|
||||
HANDLE UniqueProcessId;
|
||||
PVOID Reserved2;
|
||||
ULONG HandleCount;
|
||||
ULONG SessionId;
|
||||
PVOID Reserved3;
|
||||
SIZE_T PeakVirtualSize;
|
||||
SIZE_T VirtualSize;
|
||||
ULONG Reserved4;
|
||||
SIZE_T PeakWorkingSetSize;
|
||||
SIZE_T WorkingSetSize;
|
||||
PVOID Reserved5;
|
||||
SIZE_T QuotaPagedPoolUsage;
|
||||
PVOID Reserved6;
|
||||
SIZE_T QuotaNonPagedPoolUsage;
|
||||
SIZE_T PagefileUsage;
|
||||
SIZE_T PeakPagefileUsage;
|
||||
SIZE_T PrivatePageCount;
|
||||
LARGE_INTEGER Reserved7[6];
|
||||
} SYSTEM_PROCESS_INFORMATION;
|
||||
|
||||
typedef struct _OBJECT_ATTRIBUTES {
|
||||
ULONG Length;
|
||||
HANDLE RootDirectory;
|
||||
PUNICODE_STRING ObjectName;
|
||||
ULONG Attributes;
|
||||
PVOID SecurityDescriptor;
|
||||
PVOID SecurityQualityOfService;
|
||||
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
|
||||
|
||||
|
||||
typedef struct _CLIENT_ID {
|
||||
HANDLE UniqueProcess;
|
||||
HANDLE UniqueThread;
|
||||
} CLIENT_ID, *PCLIENT_ID;
|
||||
|
||||
|
||||
|
||||
<MAIN>
|
||||
{
|
||||
|
||||
DWORD targetProcessId = 0x9c0;
|
||||
CLIENT_ID clientId = NULL;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes = { 0 };
|
||||
clientId.UniqueProcess = targetProcessId;
|
||||
clientId.UniqueThread = NULL;
|
||||
HANDLE hProcess = NULL;
|
||||
ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
|
||||
PVOID BaseAddress = NULL;
|
||||
ULONG_PTR ZeroBits = NULL;
|
||||
ULONG NumberOfBytesWritten = 0;
|
||||
SIZE_T RegionSize = 0x1000;
|
||||
DWORD rtn = NULL;
|
||||
DWORD imageName = NULL;
|
||||
NtOpenProcess(&hProcess, PROCESS_ALL_ACCESS, &ObjectAttributes, &clientId);
|
||||
|
||||
rtn = NtAllocateVirtualMemory(hProcess, &BaseAddress, ZeroBits, &RegionSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE)
|
||||
imageName = (SYSTEM_PROCESS_INFORMATION)rtn->ImageName->Length;
|
||||
PVOID Buffer = "Hello, World!";
|
||||
ULONG NumberOfBytesToWrite = sizeof(Buffer);
|
||||
NtWriteVirtualMemory(hProcess, BaseAddress, Buffer, NumberOfBytesToWrite, &NumberOfBytesWritten);
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
typedef struct _UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
|
||||
|
||||
|
||||
hidden struct _SYSTEM_PROCESS_INFORMATION {
|
||||
ULONG NextEntryOffset;
|
||||
ULONG NumberOfThreads;
|
||||
BYTE Reserved1[48];
|
||||
PUNICODE_STRING ImageName;
|
||||
KPRIORITY BasePriority;
|
||||
HANDLE UniqueProcessId;
|
||||
PVOID Reserved2;
|
||||
ULONG HandleCount;
|
||||
ULONG SessionId;
|
||||
PVOID Reserved3;
|
||||
SIZE_T PeakVirtualSize;
|
||||
SIZE_T VirtualSize;
|
||||
ULONG Reserved4;
|
||||
SIZE_T PeakWorkingSetSize;
|
||||
SIZE_T WorkingSetSize;
|
||||
PVOID Reserved5;
|
||||
SIZE_T QuotaPagedPoolUsage;
|
||||
PVOID Reserved6;
|
||||
SIZE_T QuotaNonPagedPoolUsage;
|
||||
SIZE_T PagefileUsage;
|
||||
SIZE_T PeakPagefileUsage;
|
||||
SIZE_T PrivatePageCount;
|
||||
LARGE_INTEGER Reserved7[6];
|
||||
} SYSTEM_PROCESS_INFORMATION;
|
||||
|
||||
typedef struct _SYSTEM_PROCESS_INFORMATION {
|
||||
ULONG NextEntryOffset;
|
||||
ULONG NumberOfThreads;
|
||||
BYTE Reserved1[48];
|
||||
PUNICODE_STRING ImageName;
|
||||
KPRIORITY BasePriority;
|
||||
HANDLE UniqueProcessId;
|
||||
PVOID Reserved2;
|
||||
ULONG HandleCount;
|
||||
ULONG SessionId;
|
||||
PVOID Reserved3;
|
||||
SIZE_T PeakVirtualSize;
|
||||
SIZE_T VirtualSize;
|
||||
ULONG Reserved4;
|
||||
SIZE_T PeakWorkingSetSize;
|
||||
SIZE_T WorkingSetSize;
|
||||
PVOID Reserved5;
|
||||
SIZE_T QuotaPagedPoolUsage;
|
||||
PVOID Reserved6;
|
||||
SIZE_T QuotaNonPagedPoolUsage;
|
||||
SIZE_T PagefileUsage;
|
||||
SIZE_T PeakPagefileUsage;
|
||||
SIZE_T PrivatePageCount;
|
||||
} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
|
||||
|
||||
<MAIN>
|
||||
{
|
||||
|
||||
DWORD test = NULL;
|
||||
DWORD rtn = NULL;
|
||||
test = (SYSTEM_PROCESS_INFORMATION)rtn->ImageName->Length;
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
+1718
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user