Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

오픈베이스 연구소

네트워크 보안 엔지니어를 위한 엘라스틱 강좌 - 7강 본문

Elastic Stack 배우기

네트워크 보안 엔지니어를 위한 엘라스틱 강좌 - 7강

godsman 2018. 4. 3. 15:02




Pcap 파일을 Elasticsearch로 넣기


pcap 파일 데이터를 elasticsearch에 저장하기 위해서는 Packetbeat를 활용할 수 도 있지만, wireshark 에서의 pcap 분석을 kibana에서 구현하기 위해 조금더 적합하게 데이터를 저장할 수 있는 아래와 같은 방법을 선택하였습니다.

wireshark의 tshark를 이용하여  pcap 파일을 elasticsearch로 넣을수 있게 json파일형태로 만들수 있습니다.

 

> tshark -Y "icmp" -r "{pcap 파일이름}.pcap" -T ek > {json 파일이름}.json


wireshark로 pcap 파일을 조회하면 아래와 같습니다. 아래에 548 건의 패킷이 있는 것을 확인할 수 있습니다.



logstash를 이용하여 packet json 파일을 elasticsearch로 넣고 kibana로 조회한 화면입니다. elasticsearch에도 데이터가 548 건 저장 된 것을 확인할 수 있습니다.





Pcap 데이터를 Kibana에서 분석하기 


 요구사항_1


request는 있는데 reply가 없는 경우를 찾고싶다!!



server간에 ping을 보내면 request 2번, reply 2번의 패킷이 발생됩니다. 따라서 4번의 패킷이면 정상, 그 외는 비정상이라고 판단합니다. 


Wireshark 에서 pcap 파일을 분석 할 때, 스크롤을 내려가며 눈으로 비정상 패킷을 찾습니다.


이번에 사용한 pcap 파일의 경우는 약 5분간 발생한 패킷이 5백여개 뿐이지만 더 많은 패킷이 발생하는 상황이나, 5분 이상의 pcap파일을 분석해야하는 경우에 비정상 패킷을 찾기위해 얼마나 많은 시간이 소요될까요? 또 비정상 패킷을 찾았다해도 정확하다고 확신할 수 있을까요? 



아래 화면은 pcap 데이터를 elasticsearch에 넣고 kibana로 만든 dashboard 입니다. 


PING_ERROR_COUNT(Data Table)은 패킷의 sequense를 기준으로 패킷 수를 세어보여줍니다. 한번의 ping은 같은 sequense 를 갖기때문에 count 결과가 4면 정상 그 미만이면 비정상 패킷으로 볼 수 있습니다. 
PACKET_TRANSITION(Visual Builder) 는 시간별로 vlan 기준으로 패킷 수를 보여줍니다. 각 vlan의 건수가 2건씩 합이 4건이면 정상, 그 미만은 비정상 패킷으로 볼 수 있습니다. 
PACKET_COUNT(Metric)은 pcap 데이터 수를 보여줍니다.  
PCAP_SEARCH(Search)는 필터된 데이터를 상세하게 볼 수 있습니다.

Dashboard 화면에서 한눈에 비정상 패킷들의 추이와 sequense 들을 볼 수 있습니다.


PING_ERROR_COUNT 에서 sequense를 선택하여 필터하면, 해당 패킷만 조회할 수 있습니다.



비정상 패킷들이 지속적으로 발행산 시간대만 선택하여 볼수도 있습니다.








요구사항_2


Delay가 발생한 패킷을 확인하고 싶다!!


 패킷 간의 발생시간 간격이 긴 시점을 찾기 위해서는 wireshark 에서 time 값을 눈으로 비교해가며 찾아야만 했습니다. 


Delay를 kibana에서 표현해주기 위해 python을 통해 패킷 간의 발생시간 차를 계산하여 데이터에 추가해주었습니다.


PACKET_DELAY(Line chart) 는 패킷의 발생시간 차 값을 시간대별로 보여줍니다. 발생 시간 차 값이 평균 0.0002-0.0003 인걸 벗어나 높은 값이 보이면 패킷 Delay가 발생한 시점을 바로 알아볼 수 있습니다.







추가기능_1


Packet을 모니터링 하고있다가 비정상 패킷이 감지되면 알람!!


Kibana에서 보다 쉽고 편하세 비정상 패킷을 모니터링할 수 있었습니다. 여기에 X-Pack 알람 기능이 추가되면 어떨까요? 사람이 계속 모니터링 할 필요없이 패킷이 계속 수집되면서 비정상패킷을 탐지하여 알람을 준다면 장애파악을 빨리할수있고, 장애 시점을 보다 정확하게 추적할 수 있으니 대처가 그만큼 빨라질것이라 예상됩니다.

 


Management > Elasticsearch > Watcher 에서 'Create new watch' 에서 알람을 등록할 수 있습니다.



미리 만들어둔 대시보드에서 최근 20분 동안의 패킷데이터를 모니터링하니 비정상 패킷이 2번 발생한 것을 확인할 수 있습니다.


X-Pack Watcher에서 등록한 이벤트에 의해 비정상패킷 발생 시점에 알람이 발생한 것을 확인할 수 있습니다. 알람이 2회 발생한 것을 확인 할 수 있습니다. 



알람이 발생한 시간대를 추적하니 실제로 비정상 패킷이 있는것을 확인할 수 있었습니다.










Elastic Stack 을 활용하면 기존 wireshark 만으로 분석하는 방법보다 보다 편리하게 결과를 볼 수 있었습니다. 

여러분들이 가지고 있는 데이터를 어떻게 보고싶은지 요구사항만 주시면 Elastic Stack을 활용하여 만들어드릴수 있습니다. 데이터를 어떻게 활용하면 좋을지, 무엇이 필요한지 많이 생각해주시고 얘기해주시면 감사하겠습니다.

Comments