포스팅을 시작하기전에 사용한 툴은 다음과 같다.
1. 파이썬2 2. XAMPP (Maria DB) 3. HeidiSQL (DB GUI) |
1. 개요
해당 포스팅에는 시나리오가 있다. 악성코드 분석 중 대용량의 자료유출 흔적이 발견되어 대용량의 방화벽 로그를 확보하였다. 해당 로그를 보고 자료유출 흔적을 찾고 공격자의 위치를 찾아내는 것이다.
2. 분석
직접 수집한 데이터가 아니기 때문에 데이터에 대한 많은 정보를 공개할 수는 없다.
▶ 초기 데이터 분석
초기 데이터는 113GB의 텍스트 파일이다.
내부 내용은 [날짜 및 시간], [ID], [severity], [sys], [sub], [name], [action], [fwrule], [src_mac], [dst_mac], [src_ip], [dst_ip], [length], [srcport], [dstport] 로 이루어져있다. 이 로그를 생으로 분석하기에는 불필요한 정보가 너무 많다. 필요 / 불필요를 나누는 기준은 위의 개요에서 언급했듯 목적에 맞춰서 기준을 선정할 것이다.
데이터는 [날짜 및 시간], [src_mac], [dst_mac], [src_ip], [dst_ip],
[length], [srcport], [dstport] 를 파싱하여 최적화할 것이다. 우리의 목적은 DB에도 연동하는 것이기 때문에 각 필드 값 또한 최적화를 수행해야 한다.
▶파싱 소스 작성
3. DB 연동
DB 연동은 XAMPP를 이용하여 서버를 생성하였다.
해당 도구는 우리가 흔히 사용하는 서버를 쉽게 사용할 수 있도록 해준다. 나는 MySQL을 사용하였다.
DBname = f_log / Table name = firewall
|
4. 결론
초대량의 데이터에서 원하는 정보를 파싱하여 DB에 연동함으로써 원하는 정보를 빠르고 정확하게 찾을 수 있고 침해 사고의 대응하는데 도움이 될 수 있을 것이라는 생각을 하였다.
'개발 > Python' 카테고리의 다른 글
zlib Decompress issue (0) | 2019.02.12 |
---|---|
BeautifulSoup vs Scrapy (0) | 2019.01.06 |
크롤링(Crawling)이란? 또는 파싱(Parsing)이란? 스크래핑이란? (0) | 2019.01.06 |