diff --git a/attackevent/fw_data.go b/attackevent/fw_data.go index 06f9c90..541fc52 100644 --- a/attackevent/fw_data.go +++ b/attackevent/fw_data.go @@ -51,6 +51,7 @@ func Fw_event(cookieStr string) { sheet.Cell("M1").SetString("域名(host)") sheet.Cell("N1").SetString("请求路径") sheet.Cell("O1").SetString("参数") + sheet.Cell("P1").SetString("源ip地区") log.Println("生成表格表头标题") //当前时间 EndTime := time.Unix(tool.Timestamp("second"), 0).Format("2006-01-02T15:04:05") @@ -99,6 +100,7 @@ func Fw_event(cookieStr string) { log.Println(values_1, i) for v, k := range Date_v(yesterday).NTOP.LogPaging { Con = v + 2 + // IP := conn.DT_GET("http://ip-api.com/json/"+k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string)+"?lang=zh-CN", nil, nil) sheet.Cell("A" + strconv.Itoa(Con)).SetString(strconv.Itoa(Con)) // 第一列 (A1) sheet.Cell("B" + strconv.Itoa(Con)).SetString(k.OutputJSON.(map[string]interface{})["Time"].(string)) sheet.Cell("C" + strconv.Itoa(Con)).SetString(k.OutputJSON.(map[string]interface{})["SrcZoneName"].(string)) @@ -114,6 +116,7 @@ func Fw_event(cookieStr string) { sheet.Cell("M" + strconv.Itoa(Con)).SetString(k.OutputJSON.(map[string]interface{})["HttpHost"].(string)) sheet.Cell("N" + strconv.Itoa(Con)).SetString(k.OutputJSON.(map[string]interface{})["HttpFirstLine"].(string)) sheet.Cell("O" + strconv.Itoa(Con)).SetString(k.OutputJSON.(map[string]interface{})["Payload"].(string)) + // sheet.Cell("P" + strconv.Itoa(Con)).SetString(Date_get(IP).(map[string]interface{})["country"].(string) + "." + Date_get(IP).(map[string]interface{})["city"].(string) + "/" + Date_get(IP).(map[string]interface{})["isp"].(string)) log.Println("开始插入昨日数据:", Con, k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string)) } } @@ -121,6 +124,7 @@ func Fw_event(cookieStr string) { } else { for v, k := range Date_v(yesterday).NTOP.LogPaging { Con = v + 2 + // IP := conn.DT_GET("http://ip-api.com/json/"+k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string)+"?lang=zh-CN", nil, nil) sheet.Cell("A" + strconv.Itoa(Con)).SetString(strconv.Itoa(Con)) // 第一列 (A1) sheet.Cell("B" + strconv.Itoa(Con)).SetString(k.OutputJSON.(map[string]interface{})["Time"].(string)) sheet.Cell("C" + strconv.Itoa(Con)).SetString(k.OutputJSON.(map[string]interface{})["SrcZoneName"].(string)) @@ -136,6 +140,7 @@ func Fw_event(cookieStr string) { sheet.Cell("M" + strconv.Itoa(Con)).SetString(k.OutputJSON.(map[string]interface{})["HttpHost"].(string)) sheet.Cell("N" + strconv.Itoa(Con)).SetString(k.OutputJSON.(map[string]interface{})["HttpFirstLine"].(string)) sheet.Cell("O" + strconv.Itoa(Con)).SetString(k.OutputJSON.(map[string]interface{})["Payload"].(string)) + // sheet.Cell("P" + strconv.Itoa(Con)).SetString(Date_get(IP).(map[string]interface{})["country"].(string) + "." + Date_get(IP).(map[string]interface{})["city"].(string) + "/" + Date_get(IP).(map[string]interface{})["isp"].(string)) log.Println("开始插入昨日数据:", Con, k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string)) } } @@ -158,6 +163,7 @@ func Fw_event(cookieStr string) { today := conn.DT_POST("https://11.2.68.146/wnm/get.j", header, bytes.NewBufferString(values.Encode())) log.Println(values_1, i) for v, k := range Date_v(today).NTOP.LogPaging { + // IP := conn.DT_GET("http://ip-api.com/json/"+k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string)+"?lang=zh-CN", nil, nil) sheet.Cell("A" + strconv.Itoa(Con+v)).SetString(strconv.Itoa(Con + v)) // 第一列 (A1) sheet.Cell("B" + strconv.Itoa(Con+v)).SetString(k.OutputJSON.(map[string]interface{})["Time"].(string)) sheet.Cell("C" + strconv.Itoa(Con+v)).SetString(k.OutputJSON.(map[string]interface{})["SrcZoneName"].(string)) @@ -173,12 +179,14 @@ func Fw_event(cookieStr string) { sheet.Cell("M" + strconv.Itoa(Con+v)).SetString(k.OutputJSON.(map[string]interface{})["HttpHost"].(string)) sheet.Cell("N" + strconv.Itoa(Con+v)).SetString(k.OutputJSON.(map[string]interface{})["HttpFirstLine"].(string)) sheet.Cell("O" + strconv.Itoa(Con+v)).SetString(k.OutputJSON.(map[string]interface{})["Payload"].(string)) + // sheet.Cell("P" + strconv.Itoa(Con+v)).SetString(Date_get(IP).(map[string]interface{})["country"].(string) + "." + Date_get(IP).(map[string]interface{})["city"].(string) + "/" + Date_get(IP).(map[string]interface{})["isp"].(string)) log.Println("开始插入今日数据:", v+Con, k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string)) } // log.Println(Date_v(JsonStr).NTOP.LogPaging) } } else { for v, k := range Date_v(today).NTOP.LogPaging { + // IP := conn.DT_GET("http://ip-api.com/json/"+k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string)+"?lang=zh-CN", nil, nil) sheet.Cell("A" + strconv.Itoa(Con+v)).SetString(strconv.Itoa(Con + v)) // 第一列 (A1) sheet.Cell("B" + strconv.Itoa(Con+v)).SetString(k.OutputJSON.(map[string]interface{})["Time"].(string)) sheet.Cell("C" + strconv.Itoa(Con+v)).SetString(k.OutputJSON.(map[string]interface{})["SrcZoneName"].(string)) @@ -194,6 +202,7 @@ func Fw_event(cookieStr string) { sheet.Cell("M" + strconv.Itoa(Con+v)).SetString(k.OutputJSON.(map[string]interface{})["HttpHost"].(string)) sheet.Cell("N" + strconv.Itoa(Con+v)).SetString(k.OutputJSON.(map[string]interface{})["HttpFirstLine"].(string)) sheet.Cell("O" + strconv.Itoa(Con+v)).SetString(k.OutputJSON.(map[string]interface{})["Payload"].(string)) + // sheet.Cell("P" + strconv.Itoa(Con+v)).SetString(Date_get(IP).(map[string]interface{})["country"].(string) + "." + Date_get(IP).(map[string]interface{})["city"].(string) + "/" + Date_get(IP).(map[string]interface{})["isp"].(string)) log.Println("开始插入今日数据:", v+Con, k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string)) } // log.Println(Date_v(JsonStr).NTOP.LogPaging) @@ -209,6 +218,14 @@ func Fw_event(cookieStr string) { log.Fatalf("保存文件时出错: %s", err) } } +func Date_get(jsonSter string) interface{} { + var jsonstr interface{} + err := json.Unmarshal([]byte(jsonSter), &jsonstr) + if err != nil { + log.Fatalf("JSON 解析失败: %v", err) + } + return jsonstr +} func Date_v(jsonStr string) *Person { var person Person diff --git a/conf/test.yaml b/conf/test.yaml index d987235..7cc88e9 100644 --- a/conf/test.yaml +++ b/conf/test.yaml @@ -1,5 +1,5 @@ ##临时数据存放点 -cookie: vindex==3b=16=0AB00=0R;supportLang=cn%2Cen;lang=cn;sessionid=200001a48a30c1c8fefb3ce8eb2389ac07ad;loginid=31f13e42f943b38bf2cd3c8fd04983f1;200001a48a30c1c8fefb3ce8eb2389ac07ad=true;abcd1234= +cookie: vindex==3c=10=0AB00=0R; supportLang=cn%2Cen; lang=cn; abcd1234=true; 200001ec7c0c8051248d8d3f9aac68224def=true; sessionid=20000108e78d84d53105d5cbef259dd09f07; loginid=fd0c8b40dd1ec230686c40e85320218d; 20000108e78d84d53105d5cbef259dd09f07=true; login=false mysql: url: 127.0.0.1 port: 3306 diff --git a/conn/http_req.go b/conn/http_req.go index e349ed8..daf64d6 100644 --- a/conn/http_req.go +++ b/conn/http_req.go @@ -57,105 +57,46 @@ func DT_POST(urls string, headers map[string]string, bytess io.Reader) string { } // req 请求体 url 请求地址 headers请求头 -func DT_GET(req map[string]interface{}, urls string) map[string]interface{} { +func DT_GET(urls string, headers map[string]string, bytess io.Reader) string { url, err := url.Parse(urls) if err != nil { log.Println(err) } - body, err := ToJsonBuff(req) + // 创建一个 POST 请求 + r, err := http.NewRequest(http.MethodGet, url.String(), bytess) if err != nil { - log.Println() - } - log.Println("hson请求体:", body) - r, err := http.NewRequest(http.MethodGet, url.String(), body) - if err != nil { - log.Println() - } - // 使用 map 动态设置请求头 - headers := map[string]string{ - "Content-Type": "application/json", - "Authorization": "Bearer YOUR_ACCESS_TOKEN", - "Accept-Language": "en-US", - "cookie": "__ac_nonce=0638733a400869171be51", + log.Println(err) } + + // // 设置请求头 + // req.Header.Set("Content-Type", "application/json") + // 使用 map 动态设置请求头 // 设置请求头 req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + for key, value := range headers { r.Header.Set(key, value) // 使用 Set 方法设置请求头 } - resp, err := http.DefaultClient.Do(r) + // 创建一个 HTTP 客户端,跳过证书验证 + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + // 发送请求 + client := &http.Client{Transport: tr} + resp, err := client.Do(r) if err != nil { log.Println(err) } - if resp.StatusCode != http.StatusOK { - log.Printf("响应失败,状态码为 %s", resp.Status) + defer resp.Body.Close() + + // 检查响应状态码 + if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { + log.Printf("server returned: %s", resp.Status) } - var gcresp map[string]interface{} - if err := ScanJson(resp, gcresp); err != nil { + + // 读取响应体内容 + body, err := ioutil.ReadAll(resp.Body) + if err != nil { log.Println(err) } - return gcresp -} - -type Person struct { - NTOP string `json:"ntop"` - LogPaging []LogPaging `json:"logpaging"` -} -type LogPaging struct { - LogType string `json:"logtype"` //日志ID - ID string `json:"id"` - UserID string `json:"userid"` - PageNo string `json:"pageno"` //页数 - CountPerPage string `json:"countperpage"` //每页计数 - TotalCounts string `json:"totalcounts"` //总条数 - InputJSON InputJSON `json:"inputjson"` //输入参数 - OutputJSON OutputJSON `json:"outputjson"` //输出参数 - TimeFilter TimeFilter `json:"timefilter"` //本次查询时间区间 -} - -type InputJSON struct { - SrcZoneName string `json:"srczonename"` //源安全域 - DestZoneName string `json:"destzonename"` //目的安全域 -} - -type OutputJSON struct { - SrcPort string `json:"srcport"` //源端口 - DestPort string `json:"destport"` //目的端口 - Action string `json:"Action"` - AttackCount string `json:"attackcount"` //攻击计数 - SrcVrfIndex string `json:"srcvrfindex"` - ThreatID string `json:"threatid"` - Severity string `json:"severity"` - HddInfo string `json:"hddinfo"` - Application string `json:"application"` //应用协议 - ThreatName string `json:"threatname"` //威胁名称 - SrcRegion string `json:"srcregion"` //源区域 - DestRegion string `json:"destregion"` //目的区域 - ThreatType string `json:"threattype"` //威胁类型 {入侵防御} - Time string `json:"time"` //时间 - ContextName string `json:"contextname"` //上下文名称 - Policy string `json:"policy"` //策略 - Protocol string `json:"protocol"` //传输协议 - SrcIPAddr string `json:"srcipaddr"` //源IP - User string `json:"user"` //用户 - DestIPAddr string `json:"destipaddr"` //目的IP - SrcZoneName string `json:"srczonename"` //源安全域 - DestZoneName string `json:"destzonename"` //目的安全域 - CVE string `json:"cve"` //漏洞披露 - MSB string `json:"msb"` - BID string `json:"bid"` - RealIP string `json:"realip"` - CapturePktName string `json:"capturepktname"` - HttpHost string `json:"httphost"` //host头 - HttpFirstLine string `json:"httpfirstline"` //请求路径 - Payload string `json:"payload"` //请求数据 - MethodName string `json:"methodname"` //方法名称 - MethodNameCN string `json:"methodnamecn"` //方法名称中国(攻击类别) - MethodSubName string `json:"methodsubname"` //方法子名称 - MethodSubNameCN string `json:"methodsubnamecn"` //方法子名称中国(具体攻击形式) - LoginUserName string `json:"loginusername"` - LoginPassword string `json:"loginpassword"` -} - -type TimeFilter struct { - StartTime string `json:"starttime"` - EndTime string `json:"endtime"` + // log.Println(string(body)) + return string(body) } diff --git a/main.go b/main.go index 362705c..9e91417 100644 --- a/main.go +++ b/main.go @@ -1,8 +1,9 @@ package main import ( + "dt_automate/attackevent" + "dt_automate/conf" "dt_automate/tool" - "dt_automate/wps" "flag" "fmt" "log" @@ -73,18 +74,18 @@ func main() { // method.HW_DTCLOUD() //截取运维中心的图片 // method.HW_BAOLJ() //截取堡垒机的图片 //运维巡检文档生成 - wps.HW_SYS_Word() //运维平台word文档生成 + // wps.HW_SYS_Word() //运维平台word文档生成 // //政务网区截图 // method.ZWW_FW1() //截取防火墙的图片 // method.ZWW_TSGZ() //截取态势感知的图片 // method.ZWW_DTCLOUD() //截取运维中心的图片 // method.ZWWW_BAOLJ() //截取堡垒机的图片 //运维巡检文档生成 - wps.ZWW_SYS_Word() //运维平台word文档生成 + // wps.ZWW_SYS_Word() //运维平台word文档生成 //安全巡检文档生成 - wps.SAFET_Word() //安全巡检文档生成 + // wps.SAFET_Word() //安全巡检文档生成 //安全事件表格生成(需要先执行互联网区防火墙截图) - // attackevent.Fw_event(conf.GET_Config_yaml("cookie").(string)) //将防火墙安全事件存放到xlsx文件中 + attackevent.Fw_event(conf.GET_Config_yaml("cookie").(string)) //将防火墙安全事件存放到xlsx文件中 } } else { log.Println("没有授权") diff --git a/大同信创云平台安全运维日报20250228.docx b/大同信创云平台安全运维日报20250228.docx deleted file mode 100644 index 7900d91..0000000 Binary files a/大同信创云平台安全运维日报20250228.docx and /dev/null differ diff --git a/防火墙安全事件-20250228.xlsx b/防火墙安全事件-20250228.xlsx deleted file mode 100644 index 96b7ec5..0000000 Binary files a/防火墙安全事件-20250228.xlsx and /dev/null differ diff --git a/防火墙安全事件20250228.xlsx b/防火墙安全事件20250228.xlsx new file mode 100644 index 0000000..11bd3a9 Binary files /dev/null and b/防火墙安全事件20250228.xlsx differ