diff options
| -rw-r--r-- | Inveigh/Listeners/SMBListener.cs | 2 | ||||
| -rw-r--r-- | Inveigh/Program.cs | 2 | ||||
| -rw-r--r-- | Inveigh/Protocols/Quiddity/Quiddity/Listeners/LLMNRListener.cs | 15 | ||||
| -rw-r--r-- | Inveigh/Protocols/Quiddity/Quiddity/Listeners/MDNSListener.cs | 10 | ||||
| -rw-r--r-- | Inveigh/Protocols/Quiddity/Quiddity/Listeners/NetBIOSNSListener.cs | 17 | ||||
| -rw-r--r-- | Inveigh/Protocols/Quiddity/Quiddity/Protocols/MDNS/MDNSChecker.cs | 2 | ||||
| -rw-r--r-- | Inveigh/Protocols/Quiddity/Quiddity/Protocols/NTLM/NTLMResponse.cs | 4 | ||||
| -rw-r--r-- | Inveigh/Sniffer/Sniffer.cs | 31 | ||||
| -rw-r--r-- | Inveigh/Sockets/ICMPv6Socket.cs | 13 | 
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                  {  |