
syslog를 추적하고 IP/포트 번호를 구문 분석하여 공격자를 실시간으로 시각화하는 사이버 보안 GeoIP 공격 지도입니다.
현재 제 삶에서 이 프로젝트를 유지할 시간이 많지 않습니다. 저는 이 도전을 JavaScript를 배우고, 이미 알고 있던 Python을 향상시키기 위한 수단으로 시작했습니다. 구현 방식에 대해 다르게 할 수 있었던 점이 분명히 있을 것이며, 제 코드를 다운로드하여 살펴보는 누군가로부터 건설적인 비판을 받더라도 기분 나쁘지 않을 것입니다. 이 작업을 하면서 엄청나게 많은 것을 배웠다고 생각하며, 오픈 소스 커뮤니티가 계속해서 저에게 많은 것을 가르쳐 주길 바랍니다 :)
참고: 제가 이 프로젝트를 유지하지 않기 때문에 몇 가지 기능이 바로 작동하지 않을 수 있습니다. 예를 들어, 합법적인 MapBox API 키를 지불하지 않았기 때문에 지도가 표시되지 않을 수 있습니다. 이를 해결하려면 직접 MapBox 계정을 만들고 자신의 키를 사용해야 할 것입니다.
이 geoip 공격 지도 시각화 도구는 실시간으로 조직에 대한 네트워크 공격을 표시하기 위해 개발되었습니다. 데이터 서버는 syslog 파일을 따라가며 소스 IP, 대상 IP, 소스 포트, 대상 포트를 추출합니다. 프로토콜은 일반적인 포트를 통해 결정되며, 시각화는 프로토콜 유형에 따라 색상이 다릅니다. 데모 비디오는 여기를 클릭하세요. 이 프로젝트는 2015년 Palmetto Cyber Defense Competition을 위한 사이버 방어 경쟁 네트워크 트래픽 시각화 도구를 만든 Sam Cappella 덕분에 가능했습니다. 저는 주로 그의 코드를 참고했지만, 디스플레이 서버와 웹앱의 시각적 측면을 만드는 과정에서 몇 가지 함수를 차용했습니다. 또한 Dylan Madisetti님께도 구현의 특정 측면에 대해 조언을 주셔서 특별히 감사드립니다.
이 프로그램은 전적으로 syslog에 의존하며, 모든 장비가 로그를 다르게 포맷하기 때문에 로그 파싱 함수를 사용자 지정해야 합니다. 조직에서 보안 정보 및 이벤트 관리 시스템(SIEM)을 사용한다면, 로그를 정규화하여 정규식 작성 시간을 크게 절약할 수 있습니다.
오류나 버그를 발견하면 알려주세요. 질문과 피드백도 환영하며, [email protected]으로 보내거나 이 저장소에 이슈를 열어주세요.
Ubuntu 16.04 LTS에서 테스트되었습니다.
애플리케이션 클론:
git clone https://github.com/matthewclarkmay/geoip-attack-map.git
시스템 종속성 설치:
sudo apt install python3-pip redis-server
Python 요구사항 설치:
cd geoip-attack-map
sudo pip3 install -U -r requirements.txt
Redis 서버 시작:
redis-server
데이터 서버 DB 구성:
cd DataServerDB
./db-dl.sh
cd ..
데이터 서버 시작:
cd DataServer
sudo python3 DataServer.py
Syslog 생성 스크립트 시작 (DataServer 디렉토리 내):
새 터미널 탭 열기 (Ubuntu에서는 Ctrl+Shift+T).
./syslog-gen.py
./syslog-gen.sh
공격 맵 서버 구성, 플래그를 올바른 위치에 압축 해제:
새 터미널 탭 열기 (Ubuntu에서는 Ctrl+Shift+T).
cd AttackMapServer/
unzip static/flags.zip
공격 맵 서버 시작:
sudo python3 AttackMapServer.py
브라우저에서 공격 맵 서버 접속:
다른 컴퓨터의 브라우저를 통해 접속하려면 AttackMapServer를 실행하는 머신의 외부 IP를 사용합니다.
AttackMapServer 디렉토리의 /static/map.js 파일에서 IP 주소를 편집합니다. 다음에서:
var webSock = new WebSocket("ws:/127.0.0.1:8888/websocket");
예를 들어 다음과 같이 변경합니다:
var webSock = new WebSocket("ws:/192.168.1.100:8888/websocket");
공격 맵 서버를 다시 시작합니다:
sudo python3 AttackMapServer.py
다른 컴퓨터에서 브라우저를 다음 주소로 지정합니다:
http://192.168.1.100:8888/