Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Connect          connect          = new Connect();
            var              logRepository    = LogManager.GetRepository(Assembly.GetEntryAssembly());
            NessusOperations nessusOperations = new NessusOperations();
            string           token            = "";
            int              operation        = 0;



            XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));



            ConnectJsonOperations.ControlFileAndGetAuthInfo(ref connect);



            token = nessusOperations.GetToken(connect.Url, connect);
            if (token != null)
            {
                log.Info(" login test - establishing connection and getting token success");
            }
            else
            {
                log.Error("login test - error while getting token. Please check auth.json file");
                Environment.Exit(0);
            }



            while (true)
            {
                Console.Write("--POSSUS--\n1 - Export last scan\n2 - Export scan by ID\n3 - List all scan IDs\n4 - Get last scan\n5 - Get scan by ID\n6 - Get server status\n\nOperation: ");

                bool Valid = false;
                while (Valid == false)
                {
                    string Input = Console.ReadLine();
                    if (int.TryParse(Input, out operation))
                    {
                        Valid = true;
                    }
                    else
                    {
                        Console.Write("please write integer: ");
                    }
                }

                switch (operation)
                {
                case 1:
                    AppOperations.ExportLastScan(connect);
                    break;

                case 2:
                    AppOperations.ExportScanById(connect);
                    break;

                case 3:
                    AppOperations.ListAllScanIds(connect);
                    break;

                case 4:
                    AppOperations.GetLastScan(connect);
                    break;

                case 5:
                    AppOperations.GetScanById(connect);
                    break;

                case 6:
                    AppOperations.GetServerStatus(connect);
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        public void GetAndReturnScan(string URL, Connect na, string id, string file, int export = 0)
        {
            XmlDocument          doc;
            string               xml;
            List <JToken>        Vulnerabilities;
            IRestResponse        Response = null;
            JObject              Details  = null;
            List <JToken>        Tags;
            ScanResult           scanResult = new ScanResult();
            Host                 host       = new Host(); //host
            Vulnerability        vulnerability;
            List <Vulnerability> vulnerabilities = new List <Vulnerability>();

            try
            {
                string token = GetToken(URL, na);
                Client = new RestClient(URL + "/scans/" + id + "/export/" + file + "/download");
                SSLHandler();
                Request = new RestRequest(Method.GET);
                Request.AddHeader("X-Cookie", $"token={token}");
                Response = Client.Execute(Request);
                StatusCodeChecker(Response);
                log.Info("GetAndReturnScan get request is success");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                log.Error("error while get request in GetAndReturnScan");
            }

            string json;


            try
            {
                //convert and parse xml to json
                xml = Response.Content;
                doc = new XmlDocument();
                doc.LoadXml(xml);
                json    = JsonConvert.SerializeXmlNode(doc);
                Details = JObject.Parse(json);
                File.WriteAllText($"zzz.json", JsonConvert.SerializeObject(Details)); //--------------------------
                log.Info("convert and parse xml to json is success");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                log.Error("error while convert and parse xml to json");
            }


            Vulnerabilities = Details["NessusClientData_v2"]["Report"]["ReportHost"]["ReportItem"].ToList();
            Tags            = Details["NessusClientData_v2"]["Report"]["ReportHost"]["HostProperties"]["tag"].ToList();


            //scan name
            if (Details["NessusClientData_v2"]["Report"]["@name"] != null)
            {
                scanResult.ScanName = Details["NessusClientData_v2"]["Report"]["@name"].ToString();
            }

            //report generated
            scanResult.ReportGenerated = DateTime.Now.ToString();



            //hosts
            foreach (var item in Tags)
            {
                //target
                if (item["@name"].ToString() == "host-ip")
                {
                    if (item["#text"] != null)
                    {
                        host.Target = item["#text"].ToString();
                    }
                }
                //scan start date
                else if (item["@name"].ToString() == "HOST_START")
                {
                    if (item["#text"] != null)
                    {
                        host.ScanStartDate = item["#text"].ToString();
                    }
                }
                //scan finish date
                else if (item["@name"].ToString() == "HOST_END")
                {
                    if (item["#text"] != null)
                    {
                        host.ScanFinishDate = item["#text"].ToString();
                    }
                }
                //mac address
                else if (item["@name"].ToString() == "mac-address")
                {
                    if (item["#text"] != null)
                    {
                        host.MacAddress = item["#text"].ToString();
                    }
                }
                //operating system
                else if (item["@name"].ToString() == "operating-system")
                {
                    if (item["#text"] != null)
                    {
                        host.OperatingSystem = item["#text"].ToString();
                    }
                }
            }

            Console.WriteLine();
            Console.WriteLine("ScanName         : " + scanResult.ScanName);
            Console.WriteLine("ReportGenerated  : " + scanResult.ReportGenerated);
            Console.WriteLine("Target           : " + host.Target);
            Console.WriteLine("ScanStartDate    : " + host.ScanStartDate);
            Console.WriteLine("ScanFinishDate   : " + host.ScanFinishDate);
            Console.WriteLine("MAC Address      : " + host.MacAddress);
            Console.WriteLine("OperatingSystem  : " + host.OperatingSystem);



            Console.WriteLine("\nVulnerabilities");

            foreach (var item in Vulnerabilities)
            {
                vulnerability = new Vulnerability();
                //protocol
                if (item["@protocol"] != null)
                {
                    vulnerability.Protocol = item["@protocol"].ToString();
                }

                //severity
                if (item["@severity"] != null)
                {
                    vulnerability.Severity = (SeverityEnum)int.Parse(item["@severity"].ToString());
                }


                //pluginid
                if (item["@pluginID"] != null)
                {
                    vulnerability.PluginId = item["@pluginID"].ToString();
                }

                //name
                if (item["@pluginName"] != null)
                {
                    vulnerability.Name = item["@pluginName"].ToString();
                }

                //cvss base score
                if (item["cvss_base_score"] != null)
                {
                    vulnerability.CvssBaseScore = item["cvss_base_score"].ToString();
                }

                //description
                if (item["description"] != null)
                {
                    vulnerability.Description = item["description"].ToString();
                }

                //solution
                if (item["solution"] != null)
                {
                    vulnerability.Solution = item["solution"].ToString();
                }

                //plugin output
                if (item["plugin_output"] != null)
                {
                    vulnerability.Output = item["plugin_output"].ToString();
                }


                vulnerabilities.Add(vulnerability);
                Console.WriteLine("----------------------------------");
                Console.WriteLine("\tprotocol         : " + vulnerability.Protocol);
                Console.WriteLine("\tseverity         : " + vulnerability.Severity);
                Console.WriteLine("\tpluginID         : " + vulnerability.PluginId);
                Console.WriteLine("\tname             : " + vulnerability.Name);
                Console.WriteLine("\tcvssBaseScore    : " + vulnerability.CvssBaseScore);
                Console.WriteLine("\tdescription      : " + vulnerability.Description);
                Console.WriteLine("\tsolution         : " + vulnerability.Solution);
                Console.WriteLine("\toutput           : " + vulnerability.Output);


                log.Info("writing info to console is success");
            }

            //export json
            if (export == 1)
            {
                try
                {
                    new ScanResultCollection(scanResult, host, vulnerabilities); //sikinti burada
                    log.Info("json export is success");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    log.Error("error while exporting json");
                }
            }
        }