/* * Task seçilir. * */ public static string SelectTask(OpenVASManager manager) { bool tmp = false; string taskContent = ""; do { Console.Write("İlgili Task için ID girmeniz yeterlidir: "); taskContent = Console.ReadLine(); int taskID = 0; if (int.TryParse(taskContent, out taskID)) { tmp = true; return(Convert.ToString(taskID)); } else { Console.WriteLine("Lütfen değeri kontrol ediniz."); } } while (tmp == false); return("1"); }
/* * Policy/Config Listelenir. Policy tarama ayarıdır. Full and Fast gibi seçenekleri mevcuttur. * */ public static void ListPolicys(OpenVASManager manager) { int i = 0; XDocument configs = manager.GetScanConfigurations(); foreach (XElement node in configs.Descendants(XName.Get("name"))) { int j = 0; foreach (XElement comment in configs.Descendants(XName.Get("comment"))) { if (node.Value == "") { break; } if (i == j) { Console.WriteLine(i + 1 + ") " + node.Value + ": " + comment.Value); i += 1; break; } j += 1; } } }
/* * Yeni bir target/hedef oluşturulur ve bu target/hedefin ID değeri döndürülür. * */ public static string CreateTarget(OpenVASManager manager, Guid portListID, string targetIPs, string excludeHost) { XDocument targetIPsXML = manager.CreateSimpleTarget(targetIPs, "C# Targets -- " + Guid.NewGuid().ToString(), portListID, excludeHost); string targetID = targetIPsXML.Root.Attribute("id").Value; return(targetID); }
/* * Port Listesi seçilir. * */ private static string SelectPort(OpenVASManager manager) { bool tmp = false; string portList = ""; do { Console.Write("İlgili Port için ID girmeniz yeterlidir: "); portList = Console.ReadLine(); int portListID = 0; if (int.TryParse(portList, out portListID)) { tmp = true; return(Convert.ToString(portListID)); } else { Console.WriteLine("Lütfen deðeri kontrol ediniz."); } } while (tmp == false); return("1"); }
/* * Policy'ler listelenir. Policy Seçilir. Seçilen Policy'nin id değeri döndürülür. * */ public static string GetPolicyGUID(OpenVASManager manager) { BLPolicy.ListPolicys(manager); int key = SelectPolicy(manager); return(BLPolicy.GetPolicyGUID(manager, key)); }
public override void ProcessRequest(HttpContext context) { using (OpenVASManagerSession session = new OpenVASManagerSession(ConfigurationManager.AppSettings["openvasUser"], ConfigurationManager.AppSettings["openvasPass"], ConfigurationManager.AppSettings["openvasHost"])) { using (OpenVASManager manager = new OpenVASManager(session)) { XmlDocument doc = manager.GetConfigs(string.Empty, false, false, string.Empty, string.Empty); context.Response.Write(doc.OuterXml); } } }
/* * Parametre olarak alınan targetPorts aralığında Port List oluşturulur. Örneğin 80 ile 8088 arasındaki portlar taransması için '80-8088' girilir. * Oluşturulan Port List'in ID döndürülür ve bu ID yeni Task'ın Target Port'u olarak kullanılır. * */ public static string CreatePort(OpenVASManager manager, string targetPorts) { try { XDocument targetPortsXML = manager.CreateSimplePort("Port: " + targetPorts.Split('T')[1] + " -- " + Guid.NewGuid().ToString(), "Deneme", targetPorts); string targetPortsID = targetPortsXML.Root.Attribute("id").Value; return(targetPortsID); } catch (Exception ex) { Console.WriteLine(ex.Message); return(null); } }
/* * Tasklar listelenir. * */ public static void ListTasks(OpenVASManager manager) { int counter = 0; XDocument tasks = manager.GetTasks(); foreach (XElement task in tasks.Descendants(XName.Get("name"))) { if (task.Value != "" && task.Parent.Name == "task") { Console.WriteLine((counter + 1) + ") " + task.Value); counter += 1; } } }
/* * Kayıtlı olan ve bizim oluşturduğumuz Port Listeleri listelenir.All TCP, All TCP and Nmap 5.51 top 100 UDP ve C# Ports -- xxxx.xxxx.xxxx.xxxx * */ public static void ListPorts(OpenVASManager manager) { int i = 0; XDocument configs = manager.GetPortLists(); foreach (XElement node in configs.Descendants(XName.Get("name"))) { if (node.Value != "" && node.Value != "admin" && node.Value != "Everything") { Console.WriteLine(i + 1 + ") " + node.Value); i += 1; } } }
/* * Bu Fonksiyon Hedef/Target GUID değerini döndürür. * */ public static string GetTargetGUID(OpenVASManager manager) { //Set Port UUID string portChange = ""; string targetPortGuid = ""; do { Console.WriteLine("Port List oluşturmak istiyor musunuz? (E/H)"); portChange = Console.ReadLine().ToString(); //Port Create or Select if (portChange.ToUpper() == "E") { targetPortGuid = PLPort.CreatePortList(manager); } else if (portChange.ToUpper() == "H") { targetPortGuid = PLPort.GetPortGUID(manager); } if (targetPortGuid == null) { return("0"); } } while (portChange.ToUpper() != "E" && portChange.ToUpper() != "H" && targetPortGuid == null); try { //Set Target Console.WriteLine("Hedef IP adres(leri) giriniz. IP adreslerini virgül ile ayırınız."); string hostTargets = Console.ReadLine(); //IPAddress iPAddress = IPAddress.Parse(hostTargets); Console.WriteLine("Hariç tutulacak IP adres(leri) giriniz. IP adreslerini virgül ile ayırınız."); string excludeTargets = Console.ReadLine(); //IPAddress excludeIpAddress = IPAddress.Parse(excludeTargets); return(BLTarget.CreateTarget(manager, new Guid(targetPortGuid), hostTargets, excludeTargets)); } catch (Exception ex) { Console.WriteLine("IP Adress hatalı girdiniz. Lütfen sadece rakamla giriniz. Kontrol ediniz.\n" + ex.Message); return("0"); } }
/* * Yeni bir Hedef Port listesi tanımlanır ve ID değeri döndürülür. * */ public static string CreatePortList(OpenVASManager manager) { Console.WriteLine("Hedef Port adreslerini giriniz. -- 1-1000, 1005-1100 -- veya -- 1-65535 -- gibi."); //Parse tool can write... string portGUID = BLPort.CreatePort(manager, "T: " + Convert.ToString(Console.ReadLine())); if (portGUID == null) { Console.Write("Port List hatalı girildi...\n"); } else { return(portGUID); } return(null); }
/* * Task yaratılır. * */ public static bool CreateTask(OpenVASManager manager) { string PolicyGUID = PLPolicy.GetPolicyGUID(manager); if (PolicyGUID == "0") { Console.WriteLine("Geçersiz Policy değeri girdiniz."); return(false); } string TargetGUID = PLTarget.GetTargetGUID(manager); if (TargetGUID == "0") { Console.WriteLine("İşlem İptal Edildi. Task oluşturulmadı."); return(false); } BLTask.CreateTask(manager, new Guid(PolicyGUID), new Guid(TargetGUID)); return(true); }
/* * Parametre olarak aldığı taskGUID'nin içerdiği ReportGUID'leri listeler. * */ private static List <string> ListReports(OpenVASManager manager, Guid taskGUID) { List <string> listReportGuid = new List <string>(); string tmp = ""; int counter = 1; XDocument tasks = manager.GetTasks(taskGUID); foreach (XElement task in tasks.Descendants(XName.Get("report"))) { tmp = task.Attribute("id").Value; if (!listReportGuid.Contains(tmp)) { Console.WriteLine("Rapor " + counter + " :" + task.Attribute("id").Value); listReportGuid.Add(tmp); counter += 1; } } return(listReportGuid); }
/* * Yeni bir task oluşturulur. * */ public static void CreateTask(OpenVASManager manager, Guid policyID, Guid targetID) { //Set Task XDocument task = manager.CreateSimpleTask("C# Tasks - " + Guid.NewGuid().ToString(), string.Empty, policyID, targetID); Guid taskID = new Guid(task.Root.Attribute("id").Value); manager.StartTask(taskID); XDocument status = manager.GetTasks(taskID); while (status.Descendants("status").First().Value != "Done") { Thread.Sleep(10000); Console.Write(status.Descendants(XName.Get("progress")).First().Nodes().OfType <XText>().First().Value + " - "); status = manager.GetTasks(taskID); } GetTaskReports(manager, taskID); }
/* * Parametre olarak aldığı taskGUID'nin * */ public static bool GetTaskReports(OpenVASManager manager, Guid taskGUID) { string reportGuid = GetReportGUID(ListReports(manager, taskGUID)); if (reportGuid != "0") { XDocument taskDetail = manager.GetTaskReports(new Guid(reportGuid)); XElement firstChild = taskDetail.Root.Elements().First(); //Console.WriteLine(firstChild.ToString()); //taskDetail.Root.Parent.Remove(); string strPath = Environment.GetFolderPath( System.Environment.SpecialFolder.DesktopDirectory); //FirstChild.Save(strPath + "\\openvasReport.txt"); System.IO.File.WriteAllText(strPath + "\\openvasReport.txt", firstChild.ToString()); Console.WriteLine("Rapor " + strPath + " konumunda oluşturuldu"); return(true); } else { return(false); } }
/* * Policy seçilir. * */ private static int SelectPolicy(OpenVASManager manager) { bool tmp = false; do { Console.Write("İlgili Policy için ID girmeniz yeterlidir: "); string policy = Console.ReadLine(); int policyID = 0; if (int.TryParse(policy, out policyID)) { tmp = true; return(policyID); } else { Console.WriteLine("Lütfen deðeri kontrol ediniz."); } } while (tmp == false); return(0); }
/* * Parametrede yer alan key sırasındaki ilgili Policy'nin ID değerini döndürür. * */ public static string GetPolicyGUID(OpenVASManager manager, int key) { string policy = ""; int counter = 0; XDocument configs = manager.GetScanConfigurations(); foreach (XElement node in configs.Descendants(XName.Get("name"))) { if (node.Value != "") { if (counter == key - 1) { policy = node.Parent.Attribute("id").Value; return(policy); } else { counter += 1; } } } return("0"); }
/* * Seçilen Port List'in ID döndürülür. (Key, Terminal ekranında 'İlgili Port için ID girmeniz yeterlidir:' kısmında girilen değerdir.) * */ public static string GetPortID(OpenVASManager manager, int key) { string portListGuid = ""; int counter = 0; XDocument configs = manager.GetPortLists(); foreach (XElement node in configs.Descendants(XName.Get("name"))) { if (node.Value != "" && node.Value != "admin" && node.Value != "Everything") { if (counter == key - 1) { portListGuid = node.Parent.Attribute("id").Value; return(portListGuid); } else { counter += 1; } } } return(null); }
/* * Seçilen taskın GUID (Globally Unique Identifier) değerini döndürür. * */ public static string GetTaskGuid(OpenVASManager manager, int key) { int counter = 0; string taskGuid = ""; XDocument tasks = manager.GetTasks(); foreach (XElement task in tasks.Descendants(XName.Get("name"))) { if (task.Value != "" && task.Parent.Name == "task") { if (key - 1 == counter) { taskGuid = task.Parent.Attribute("id").Value; return(taskGuid); } counter += 1; } } return("0"); }
public virtual void Create(OpenVASManager manager) { manager.CreateTask(this.Name, this.Comment, this.Config.RemoteConfigID.ToString(), this.Target.RemoteTargetID.ToString(), this.Escalator.RemoteEscalatorID.ToString(), this.Schedule.RemoteScheduleID.ToString(), this.Slave.RemoteSlaveID.ToString()); }
/* * Tasklar listelenir. * */ public static void ListTasks(OpenVASManager manager) { Console.Write("\nTask Listesi:\n"); BLTask.ListTasks(manager); }
/* * Target Port Listesinden seçilen target listin ID değerini döndürür. * */ public static string GetPortGUID(OpenVASManager manager) { BLPort.ListPorts(manager); return(BLPort.GetPortID(manager, Convert.ToInt32(SelectPort(manager)))); }
/* Here is Protocol Documentaion * http://docs.greenbone.net/API/OMP/omp-7.0.html * */ /*OpenVAS need to username, password, * ip that service is running and * port that openvasmd service is running... */ /* * You have to pay attention your firewall * because it is blocking ports except known ports.. */ public static void Main(string[] args) { PLSession.SetIPAndPort(); using (OpenVASSession session = new OpenVASSession(PLSession.Username, PLSession.Password, PLSession.IP, PLSession.Port)) { using (OpenVASManager manager = new OpenVASManager(session)) { if (session.Stream != null && session.Username != null && session.Password != null) { string change; bool isReport = true; do { Console.Write("" + "\nAşağıdaki işlemlerden birini seçiniz. \n" + "* Raporları getirmek için 'R' basınız. \n" + "* Yeni bir tarama için 'T' basınız.\n" + "* OpenVAS Management Protocol Versiyonu İçin 'V' basınız.\n" + "* Test için 'E' basınız.\n" + "* Çıkış için 'Q' basınız.\n"); Console.Write("Seçim: "); change = Console.ReadLine().ToUpper(); if (change.ToUpper() == "T") { PLTask.CreateTask(manager); } else if (change.ToUpper() == "R") { PLTask.ListTasks(manager); Console.Write("\nRapor Seçiniz.\n"); string ReportGUID = BLTask.GetTaskGuid(manager, Convert.ToInt32(PLTask.SelectTask(manager))); if (ReportGUID == "0") { Console.WriteLine("İlgili Task bulunamadı..."); } else { isReport = BLTask.GetTaskReports(manager, new Guid(ReportGUID)); } if (!isReport) { Console.Write("İlgili Rapor Bulunamadı. Girilen değeri kontrol ediniz.\n"); } } else if (change.ToUpper() == "V") { Console.WriteLine(manager.GetVersion()); } else if (change.ToUpper() == "E") { session.TestStream(); } else if (change.ToUpper() != "Q") { Console.WriteLine("Geçersiz işlem. Tekrar Deneyiniz."); } } while (change.ToUpper() != "Q"); } } Console.Write("İşlem sonlandırıldı."); Console.ReadLine(); } }