[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 트래픽 데이터 디코딩 성공.
관련 글
댓글 없음:
댓글 쓰기