로그 파일은 데이터를 추출하고 동일한 줄을 다시 추가합니다.

로그 파일은 데이터를 추출하고 동일한 줄을 다시 추가합니다.

snort.rule 파일이 있고 행에서 cve 번호와 참조 키를 추출하여 다시 추가해야 합니다.MSG중괄호 안의 같은 행에 있는 필드, 아래에는 이전 로그가 있습니다.

경고 udp $HOME_NET 1900 -> 모든 모든 (msg: "ET INFO UPnP 검색 검색 응답 취약한 UPnP 장치 2"; 콘텐츠: "UPnP 장치용 Intel SDK"; pcre: "/^Server\x3a[^\ r\n] *UPnP 장치용 Intel SDK/mi"; 참조: /infosec/blog/2013/01/29; 참조: arch/UPnP-arch-DeviceArchitecture-v1.1.pdf; 참조: cve,2012 -5958; 참조: CVE , 2012-5959; SID: 2016303; 개정: 4;

원하는 출력은 다음과 같습니다. 새로운 변경 사항은 굵게 표시됩니다.

경고 udp $HOME_NET 1900 -> any any(msg:"ET INFO UPnP 검색 응답 취약한 UPnP 장치 2{cve,2012-5958 cve,2012-5959}"; content:"UPnP 장치용 Intel SDK"; pcre:"/^Server\x3a[^\r\n]*UPnP 장치용 Intel SDK/mi"; 참조: /infosec/blog/2013/01/ 29; 참조: Arch/UPnP-arch-DeviceArchitecture-v1.1.pdf; 참조: cve, 2012-5958; 참조: cve, 2012-5959;)

CVE 번호를 추출할 수 있지만 다시 추가한 후에는 얻을 수 없습니다.

cat /tmp/snort.rule | grep -o -E -e 'sid:[^;]+' -e 'reference:cve,[^;]+'

답변1

시도해 보고 쉘 파일에 복사한 후 실행하면 출력을 새 파일에 저장할 수 있습니다. awk -F\; ' { for ( i = 1 ; i <= NF ; i++ ) { if ( $i ~ "msg" ) a = i if ( $i ~ "reference:cve," ) { b = $i sub ( ".*:" , "" , b ) c = c " " b } } sub ( ".$" , "{" c "\"}" , $a ) } 1' /tmp/snort.rule

관련 정보