Panoptes
1.0.0
Endpoint Detection and Response
Loading...
Searching...
No Matches
src
driver
src
ioctl.cpp
Go to the documentation of this file.
1
#include "
ioctl.h
"
2
3
//NTSTATUS DeviceCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
4
//{
5
// PAGED_CODE();
6
// UNREFERENCED_PARAMETER(DeviceObject);
7
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Driver - DeviceCreate\n");
8
//
9
// Irp->IoStatus.Status = STATUS_SUCCESS;
10
// Irp->IoStatus.Information = 0;
11
// IoCompleteRequest(Irp, IO_NO_INCREMENT);
12
//
13
// return STATUS_SUCCESS;
14
//}
15
16
//NTSTATUS DeviceClose(PDEVICE_OBJECT DeviceObject, PIRP Irp)
17
//{
18
// PAGED_CODE();
19
// UNREFERENCED_PARAMETER(DeviceObject);
20
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Driver - DeviceClose\n");
21
//
22
// Irp->IoStatus.Status = STATUS_SUCCESS;
23
// Irp->IoStatus.Information = 0;
24
// IoCompleteRequest(Irp, IO_NO_INCREMENT);
25
//
26
// return STATUS_SUCCESS;
27
//}
28
29
//NTSTATUS DeviceControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
30
//{
31
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: HERE6\n");
32
//
33
// PIO_STACK_LOCATION irpSp = IoGetCurrentIrpStackLocation(Irp);
34
// NTSTATUS status = STATUS_SUCCESS;
35
// ULONG_PTR bytesTransferred = 0;
36
// ULONG inputBufferLength = 0;
37
// EVENT_DATA eventData;
38
// RtlZeroMemory(&eventData, sizeof(EVENT_DATA));
39
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: BEFORE\n");
40
//
41
//
42
// switch (irpSp->Parameters.DeviceIoControl.IoControlCode) {
43
// case IOCTL_GET_EVENT:
44
// {
45
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Control Process Code Read\n");
46
//
47
// if (irpSp->Parameters.DeviceIoControl.OutputBufferLength < sizeof(EVENT_DATA))
48
// {
49
// status = STATUS_BUFFER_TOO_SMALL;
50
// break;
51
// }
52
//
53
// if (DequeueEvent(&eventData))
54
// {
55
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Driver - Dequeued %wd Type Successfully\n", eventData.Type);
56
//
57
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Dequeued an event\n");
58
// if (eventData.Type == EVENT_TYPE_PROCESS_CREATE) {
59
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Sending Parent PID %llu\n", eventData.Data.ProcessData.ParentProcessId);
60
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Sending main PID %llu\n", eventData.Data.ProcessData.ProcessId);
61
// }
62
// else if (eventData.Type == EVENT_TYPE_IMAGE_LOAD) {
63
// //DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Sending %wZ\n", &eventData.Data.ImageLoadData);
64
// //DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Sending Parent PID %llu\n", eventData.Data.ProcessData.ParentProcessId);
65
// //DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Sending main PID %llu\n", eventData.Data.ProcessData.ProcessId);
66
// }
67
//
68
// RtlCopyMemory(Irp->AssociatedIrp.SystemBuffer, &eventData, sizeof(EVENT_DATA));
69
// bytesTransferred = sizeof(EVENT_DATA);
70
// status = STATUS_SUCCESS;
71
//
72
// }
73
// else
74
// {
75
// // No event available, handle accordingly (e.g., wait or return status)
76
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[-] Panoptes: NO MORE ENTRIES\n");
77
// status = STATUS_NO_MORE_ENTRIES;
78
// }
79
// break;
80
// }
81
// case IOCTL_TERMINATE_PROCESS:
82
// {
83
// inputBufferLength = irpSp->Parameters.DeviceIoControl.InputBufferLength;
84
// if (inputBufferLength < sizeof(TERMINATE_PROCESS))
85
// {
86
// status = STATUS_BUFFER_TOO_SMALL;
87
// break;
88
// }
89
//
90
// PTERMINATE_PROCESS inputBuffer = (PTERMINATE_PROCESS)Irp->AssociatedIrp.SystemBuffer;
91
//
92
// HANDLE processHandle;
93
// NTSTATUS status = GetProcessHandleFromPID(inputBuffer->ProcessId, &processHandle);
94
//
95
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: PID to terminate = % lu\n", inputBuffer->ProcessId);
96
//
97
// ZwTerminateProcess(processHandle, STATUS_SUCCESS);
98
//
99
// ZwClose(processHandle);
100
// break;
101
// }
102
// default:
103
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[-] Panoptes: INVALID REQUEST\n");
104
// status = STATUS_INVALID_DEVICE_REQUEST;
105
// break;
106
// }
107
//
108
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Complete IRP\n");
109
//
110
// Irp->IoStatus.Information = bytesTransferred;
111
// Irp->IoStatus.Status = status;
112
// IoCompleteRequest(Irp, IO_NO_INCREMENT);
113
//
114
// return status;
115
//}
116
117
//NTSTATUS InitializeDriverLink(PDRIVER_OBJECT driverObject) {
118
// PAGED_CODE();
119
// NTSTATUS status = STATUS_SUCCESS;
120
// DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[+] Panoptes: Initializing Driver Link\n");
121
// //RtlInitUnicodeString(&g_deviceName, KERNEL_LINK);
122
//
123
// driverObject->MajorFunction[IRP_MJ_CREATE] = DeviceCreate;
124
// driverObject->MajorFunction[IRP_MJ_CLOSE] = DeviceClose;
125
// //driverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DeviceControl;
126
//
127
// //status = IoCreateDevice(
128
// // driverObject,
129
// // 0,
130
// // &g_deviceName,
131
// // FILE_DEVICE_UNKNOWN,
132
// // FILE_DEVICE_SECURE_OPEN,
133
// // FALSE,
134
// // &g_deviceObject
135
// //);
136
// //if (!NT_SUCCESS(status))
137
// //{
138
// // DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[!] Panoptes: An error occured when attempting to create the device object\n");
139
// // return status;
140
// //}
141
//
142
// //RtlInitUnicodeString(&g_symLink, KERNEL_LINK_SYM);
143
// //status = IoCreateSymbolicLink(&g_symLink, &g_deviceName);
144
// //if (!NT_SUCCESS(status))
145
// //{
146
// // DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "[!] Panoptes: An error occured when attempting to create the device object symobolic link\n");
147
// // IoDeleteDevice(g_deviceObject);
148
// // return status;
149
// //}
150
//
151
//
152
// return status;
153
//}
ioctl.h
Generated by
1.9.8