2023년 6월 23일 금요일

Splunk DB Connect - 3rd

다음은 로그스태시 jdbc 인풋 연동 결과. unhex 함수를 이용한 쿼리문이 정상 동작함을 알 수 있다.
[2023-06-23T13:19:13,487][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]} [2023-06-23T13:20:00,593][INFO ][logstash.inputs.jdbc     ][main][02f2fe91bcdc2cef22f19291d544a8551a0d1ce4c1b2aabf7a101153deed4fe1] (0.002507s) select a.timestamp, a.cid, b.sig_name, unhex(c.data_payload) from event a, signature b, data c where a.signature = b.sig_id and a.sid = c.sid and a.cid = c.cid and a.cid > 0

{                  "sig_name" => "icmp-request",                "@timestamp" => 2023-06-23T04:21:00.772026400Z,                  "@version" => "1",                       "cid" => 5316,                 "timestamp" => 2023-06-23T04:20:29.000Z,     "unhex(c.data_payload)" => #<Sequel::SQL::Blob:0x1494 bytes=56 start="\xFD\xD4\x8Bd\x00\x00\x00\x00*\x1C" end="./01234567"> } {                  "sig_name" => "web-request",                "@timestamp" => 2023-06-23T04:21:00.772026400Z,                  "@version" => "1",                       "cid" => 5317,                 "timestamp" => 2023-06-23T04:20:31.000Z,     "unhex(c.data_payload)" => #<Sequel::SQL::Blob:0x14c4 bytes=77 start="GET / HTTP" end="t: */*\r\n\r\n"> }

Splunk DB Connect 앱은 

unhex 함수를 이용한 쿼리문 실행 시 값을 가져오지 못한다.


물론 unhex 함수를 사용하지 않으면 필드값을 가져올 수는 있는데,


그렇게 가져와봤자 16진수라 읽을 수가 없음.


16진수 디코딩

우선 2개 단위로 % 기호를 붙여서 url 인코딩.


이후 urldecode 함수를 이용해서 디코딩. 그런데 icmp 트래픽 데이터는 디코딩 실패. 트래픽에 포함된 non-printable characters 때문인가?


다행히 스플렁크는 다양한 문자열 인/디코딩을 지원하는 decrypt2라는 앱을 제공한다. icmp 트래픽 데이터 디코딩 성공.


관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스