aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Inveigh/Listeners/SMBListener.cs2
-rw-r--r--Inveigh/Program.cs2
-rw-r--r--Inveigh/Protocols/Quiddity/Quiddity/Listeners/LLMNRListener.cs15
-rw-r--r--Inveigh/Protocols/Quiddity/Quiddity/Listeners/MDNSListener.cs10
-rw-r--r--Inveigh/Protocols/Quiddity/Quiddity/Listeners/NetBIOSNSListener.cs17
-rw-r--r--Inveigh/Protocols/Quiddity/Quiddity/Protocols/MDNS/MDNSChecker.cs2
-rw-r--r--Inveigh/Protocols/Quiddity/Quiddity/Protocols/NTLM/NTLMResponse.cs4
-rw-r--r--Inveigh/Sniffer/Sniffer.cs31
-rw-r--r--Inveigh/Sockets/ICMPv6Socket.cs13
9 files changed, 79 insertions, 17 deletions
diff --git a/Inveigh/Listeners/SMBListener.cs b/Inveigh/Listeners/SMBListener.cs
index a8069f3..263229c 100644
--- a/Inveigh/Listeners/SMBListener.cs
+++ b/Inveigh/Listeners/SMBListener.cs
@@ -54,7 +54,7 @@ namespace Inveigh
protected override void OutputError(Exception ex, int port)
{
- if (ex.Message.ToString().Equals("An attempt was made to access a socket in a way forbidden by its access permissions."))
+ if (ex.Message.ToString().Contains("An attempt was made to access a socket in a way forbidden by its access permissions"))
{
Output.Queue(String.Format("[!] Failed to start SMB listener on port {0}, check IP and port usage.", port));
}
diff --git a/Inveigh/Program.cs b/Inveigh/Program.cs
index f7d8ef8..97fe911 100644
--- a/Inveigh/Program.cs
+++ b/Inveigh/Program.cs
@@ -174,7 +174,7 @@ namespace Inveigh
public static string netbiosDomain = Environment.UserDomainName;
public static string dnsDomain = "";
public static ulong smb2Session = 5548434740922023936; // todo check
- public static string version = "2.0.5";
+ public static string version = "2.0.6";
static void Main(string[] arguments)
{
diff --git a/Inveigh/Protocols/Quiddity/Quiddity/Listeners/LLMNRListener.cs b/Inveigh/Protocols/Quiddity/Quiddity/Listeners/LLMNRListener.cs
index 0fbeec5..8ede4fa 100644
--- a/Inveigh/Protocols/Quiddity/Quiddity/Listeners/LLMNRListener.cs
+++ b/Inveigh/Protocols/Quiddity/Quiddity/Listeners/LLMNRListener.cs
@@ -31,6 +31,7 @@
*/
using Quiddity.LLMNR;
using System;
+using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Threading;
@@ -47,10 +48,21 @@ namespace Quiddity
public new void Start(IPAddress ipAddress, string replyIP, string replyIPv6)
{
+ Start(ipAddress, replyIP, replyIPv6, 0);
+ }
+
+ public void Start(IPAddress ipAddress, string replyIP, string replyIPv6, int runTime)
+ {
UDPListener listener = new UDPListener(AddressFamily.InterNetwork);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 5355);
isRunning = true;
IAsyncResult udpAsync;
+ Stopwatch stopwatchRunTime = new Stopwatch();
+
+ if (runTime > 0)
+ {
+ stopwatchRunTime.Start();
+ }
if (String.Equals(ipAddress.AddressFamily.ToString(), "InterNetwork"))
{
@@ -75,8 +87,9 @@ namespace Quiddity
{
Thread.Sleep(10);
- if (!isRunning)
+ if (!isRunning || stopwatchRunTime.IsRunning && stopwatchRunTime.Elapsed.Minutes >= runTime)
{
+ isRunning = false;
break;
}
diff --git a/Inveigh/Protocols/Quiddity/Quiddity/Listeners/MDNSListener.cs b/Inveigh/Protocols/Quiddity/Quiddity/Listeners/MDNSListener.cs
index bf91738..45c7abb 100644
--- a/Inveigh/Protocols/Quiddity/Quiddity/Listeners/MDNSListener.cs
+++ b/Inveigh/Protocols/Quiddity/Quiddity/Listeners/MDNSListener.cs
@@ -31,6 +31,7 @@
*/
using Quiddity.MDNS;
using System;
+using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Threading;
@@ -54,10 +55,16 @@ namespace Quiddity
public new void Start(IPAddress ipAddress, string replyIP, string replyIPv6)
{
+ Start(ipAddress, replyIP, replyIPv6, 0);
+ }
+
+ public void Start(IPAddress ipAddress, string replyIP, string replyIPv6, int runTime)
+ {
UDPListener listener = new UDPListener(AddressFamily.InterNetwork);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 5353);
isRunning = true;
IAsyncResult udpAsync;
+ Stopwatch stopwatchRunTime = new Stopwatch();
if (string.Equals(ipAddress.AddressFamily.ToString(), "InterNetwork"))
{
@@ -82,8 +89,9 @@ namespace Quiddity
{
Thread.Sleep(10);
- if (!isRunning)
+ if (!isRunning || stopwatchRunTime.IsRunning && stopwatchRunTime.Elapsed.Minutes >= runTime)
{
+ isRunning = false;
break;
}
diff --git a/Inveigh/Protocols/Quiddity/Quiddity/Listeners/NetBIOSNSListener.cs b/Inveigh/Protocols/Quiddity/Quiddity/Listeners/NetBIOSNSListener.cs
index 4dda6fd..a5627e9 100644
--- a/Inveigh/Protocols/Quiddity/Quiddity/Listeners/NetBIOSNSListener.cs
+++ b/Inveigh/Protocols/Quiddity/Quiddity/Listeners/NetBIOSNSListener.cs
@@ -31,6 +31,7 @@
*/
using Quiddity.NetBIOS;
using System;
+using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Threading;
@@ -49,12 +50,24 @@ namespace Quiddity
this.TTL = ttl;
}
- public void Start(IPAddress ipAddress, string replyIP)
+ public new void Start(IPAddress ipAddress, string replyIP)
+ {
+ Start(ipAddress, replyIP, 0);
+ }
+
+ public void Start(IPAddress ipAddress, string replyIP, int runTime)
{
UDPListener listener = new UDPListener(AddressFamily.InterNetwork);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 137);
isRunning = true;
IAsyncResult udpAsync;
+ Stopwatch stopwatchRunTime = new Stopwatch();
+
+ if (runTime > 0)
+ {
+ stopwatchRunTime.Start();
+ }
+
listener.Client.Bind(ipEndPoint);
while (isRunning)
@@ -68,7 +81,7 @@ namespace Quiddity
{
Thread.Sleep(10);
- if (!isRunning)
+ if (!isRunning || stopwatchRunTime.IsRunning && stopwatchRunTime.Elapsed.Minutes >= runTime)
{
break;
}
diff --git a/Inveigh/Protocols/Quiddity/Quiddity/Protocols/MDNS/MDNSChecker.cs b/Inveigh/Protocols/Quiddity/Quiddity/Protocols/MDNS/MDNSChecker.cs
index 0e10de5..14f24da 100644
--- a/Inveigh/Protocols/Quiddity/Quiddity/Protocols/MDNS/MDNSChecker.cs
+++ b/Inveigh/Protocols/Quiddity/Quiddity/Protocols/MDNS/MDNSChecker.cs
@@ -71,7 +71,7 @@ namespace Quiddity.MDNS
public bool QuestionIsAllowed(string question)
{
-
+
if (!Utilities.ArrayIsNullOrEmpty(this.Questions) && !Array.Exists(this.Questions, element => element == question.ToUpper()))
{
return false;
diff --git a/Inveigh/Protocols/Quiddity/Quiddity/Protocols/NTLM/NTLMResponse.cs b/Inveigh/Protocols/Quiddity/Quiddity/Protocols/NTLM/NTLMResponse.cs
index 091d591..a511ea1 100644
--- a/Inveigh/Protocols/Quiddity/Quiddity/Protocols/NTLM/NTLMResponse.cs
+++ b/Inveigh/Protocols/Quiddity/Quiddity/Protocols/NTLM/NTLMResponse.cs
@@ -164,6 +164,7 @@ namespace Quiddity.NTLM
this.EncryptedRandomSessionKeyBufferOffset = packetReader.ReadUInt32();
this.NegotiateFlags = packetReader.ReadBytes(4);
+
string flags = Convert.ToString(BitConverter.ToUInt32(this.NegotiateFlags, 0), 2).PadLeft(this.NegotiateFlags.Length * 8, '0');
if (String.Equals(flags.Substring(6, 1), "1"))
@@ -171,12 +172,13 @@ namespace Quiddity.NTLM
this.Version = packetReader.ReadBytes(8);
}
- if (String.Equals(flags.Substring(1, 1), "1"))
+ if (String.Equals(flags.Substring(16, 1), "1"))
{
this.MIC = packetReader.ReadBytes(16);
}
this.Payload = packetReader.ReadBytes(data.Length - (int)this.DomainNameBufferOffset);
+
}
}
diff --git a/Inveigh/Sniffer/Sniffer.cs b/Inveigh/Sniffer/Sniffer.cs
index 0d04edd..de8fa77 100644
--- a/Inveigh/Sniffer/Sniffer.cs
+++ b/Inveigh/Sniffer/Sniffer.cs
@@ -33,6 +33,7 @@ namespace Inveigh
IPEndPoint snifferIPEndPoint;
EndPoint snifferEndPoint;
AddressFamily addressFamily = AddressFamily.InterNetwork;
+ IAsyncResult ipAsync;
if (isIPV6)
{
@@ -70,9 +71,7 @@ namespace Inveigh
snifferIPEndPoint = new IPEndPoint(IPAddress.Parse(snifferIP), 0);
snifferSocket.ReceiveBufferSize = 4096;
snifferSocket.Bind(snifferIPEndPoint);
- snifferSocket.Blocking = false;
snifferSocket.IOControl(IOControlCode.ReceiveAll, snifferIn, snifferOut);
-
}
catch (Exception ex)
{
@@ -91,7 +90,7 @@ namespace Inveigh
throw;
}
- int packetLength;
+ int packetLength = 0;
isRunning = true;
while (isRunning)
@@ -103,10 +102,28 @@ namespace Inveigh
SocketFlags socketFlags = SocketFlags.None;
try
- {
- packetLength = snifferSocket.ReceiveMessageFrom(snifferBuffer, 0, snifferBuffer.Length, ref socketFlags, ref snifferEndPoint, out packetInformation);
- snifferData = new byte[packetLength];
- Buffer.BlockCopy(snifferBuffer, 0, snifferData, 0, packetLength);
+ {
+ ipAsync = snifferSocket.BeginReceiveMessageFrom(snifferBuffer, 0, snifferBuffer.Length, socketFlags, ref snifferEndPoint, null, null);
+
+ do
+ {
+ Thread.Sleep(10);
+
+ if (!isRunning)
+ {
+ break;
+ }
+
+ }
+ while (!ipAsync.IsCompleted);
+
+ if (isRunning)
+ {
+ packetLength = snifferSocket.EndReceiveMessageFrom(ipAsync, ref socketFlags, ref snifferEndPoint, out packetInformation);
+ snifferData = new byte[packetLength];
+ Buffer.BlockCopy(snifferBuffer, 0, snifferData, 0, packetLength);
+ }
+
}
catch
{
diff --git a/Inveigh/Sockets/ICMPv6Socket.cs b/Inveigh/Sockets/ICMPv6Socket.cs
index d4f7461..87f895a 100644
--- a/Inveigh/Sockets/ICMPv6Socket.cs
+++ b/Inveigh/Sockets/ICMPv6Socket.cs
@@ -1,6 +1,7 @@
using Quiddity.ICMPv6;
using Quiddity.Support;
using System;
+using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.Sockets;
@@ -12,9 +13,10 @@ namespace Inveigh
{
internal void Start()
{
- Program.icmpv6Interval *= 1000;
string responseMessage = " ";
byte[] spooferIPv6Data = IPAddress.Parse(Program.argSpooferIPv6).GetAddressBytes();
+ Stopwatch stopwatchInterval = new Stopwatch();
+ stopwatchInterval.Start();
while (Program.isRunning && Program.enabledICMPv6)
{
@@ -91,7 +93,14 @@ namespace Inveigh
if (Program.icmpv6Interval > 0)
{
- Thread.Sleep(Program.icmpv6Interval);
+
+ while (Program.isRunning && stopwatchInterval.Elapsed.Seconds <= Program.icmpv6Interval)
+ {
+ Thread.Sleep(10);
+ }
+
+ stopwatchInterval.Reset();
+ stopwatchInterval.Start();
}
else
{