잽싸게 올리고 빠지는 utmp parser 백배강화

가끔 *nix 머신 포렌식할 기회가 생기는데, 보통 이런 경우 침해 사건이 많다.

당연한 이야기겠지만, 요새 침해자들이 이것저것 어디서 주워들은거로 안티 포렌식 하고 가는데...
(근데 진짜 이러지 말자 어차피 IP 우회해놓고 로그는 왜 지우고 가나? 상도덕이란게 있지... 어느정도 남기고 가야지?)

아무튼 파일 복구도 안되고, 엥간한 로그는 다 지워놔서 짜증 나있는데 utmp는 아무래도 라이브다 보니ㅋ어떻게 구했다
wtmp, btmp?이런거 다 안남고 utmp만 남아서 좀 뒤져봤다.
(아참 이거 보통 /var/run/utmp 여기있음)

덕분에 간단하게? 파서 만들 시간을 갖을 수 있었다. 파일 다운로드는 [여기]
뭐 구조체야 이미 공개된거라서 이런 파서가 있을줄 알았는데 딱히 없는거 같기도 하고 EnCase는 요새 잘 안써서...
사용법은 늘 그렇듯 입력, 출력 파일명 줘서 실행...

결과는 이런식으로...

좀 아쉬운건 utmp에 전체 접속 로그가 안남는다는 점이다. 특히 sshd로 접속은 안남는다는거 같던대..쩝...
아무튼 외부에서 들어오면 호스트명 대신 IP가 몇개 나오니깐 발췌하기 좋다.

이건 한 2달전에 만들어둔건데 오늘 약간 수정해서 포스팅ㅋ

Introduction of Network Forensics tools : 패킷을 보는 5가지 방법 도구백배

여러분 본격 뉴스 보고 침해 사고를 분석하는 시대가 도래하고 있습니다. 데이터를 안보고도 원인에서 재발 방지
대책까지 결론 내시는 전문가들이 등장하고 있습니다.

정보화시대라고 하는 오늘을 살아가는 우리에게 네트워크는 이제 상식이 되었죠.
이걸 작년부터 올려야지 올려야지 하다가 사정이 있어서 미뤄졌네요. 아무튼 시대 흐름상 더이상 미룰 수 없어
그동안 저의 미천함을 보충해주던 분석 도구들을 정리해서 소개합니다. 다 아시는 것이겠지만, 참고하세요.

아 맞다. 당연히? 모두 무료로 쓸 수 있는 도구만 소개합니다. 경제도 어려운데 아껴야 잘 살죠.
샘플로 쓴 패킷 데이터는 예전에 문제 파일로 올라온거로 캡쳐 해봤습니다.

와이어샤크
너무 유명해서 소개하는게 의미가 없을듯한데, RAW 데이터를 보기 좋게 확인 할 수 있어서 꽤 사용 빈도가 높습니다.
패킷을 깨끗하게 맑게 자신있게 보여주죠. 이글에 나오는 툴들 중 가장 스탠다드하다고 생각합니다.


Log2Timeline + Splunk
딱히 패킷 분석용은 아닌데 이런 조합으로 까보는 경우도 아주 가끔 있어서 넣었습니다. 명령어로 일단 csv로 뽑고요.
나온 데이터를 splunk에서 임포트 시킵니다. 패킷이든 아니든 절차가 크게 바뀌지 않아요.
패킷 사이즈가 너무 너무 커지면, tshark로 분석하거나 이런 방법으로 일정 부분 패턴을 분석하고 필터링 걸어서
다시 와이어샤크나 다른 도구로 분석하는 방법도 있어요. 이 부분은 나중에 약간 더 디테일? 들어가기로 하고요.



0.4인가 0.7 버젼부터 사용해보고 있었는데, 개념이 신선해서 즐겨 사용했어요. 포터블하게 쓰기도 쉬워서 좋습니다.
다만 약간 느린? 단점이 있고요.

아래처럼 저장된 패킷을 볼 수도 있고 캡쳐하면서 바로바로 분석도 됩니다. 패킷보고 OS guess까지 해줍니다.

패킷내의 파일을 따로 뽑아줍니다. docx가 보이네요.

충격적이죠? 뭐 와일드한 사례에서 이런 경우는 극히 드물지만...  아무튼 메시지도 보입니다.

세션별로 포트와 대략적인 정보를 얻을 수 있습니다.

□ Xplico
개발이 더디긴하지만, 꾸준히 업데이트 되고 있습니다. 기대가 많이 가는 도구입니다.
웹 UI랑 커맨드 UI 두개 다 지원하고 잘 만들어져있습니다. 강력한 디코딩? 모듈이 많이 올라가 있습니다.
아래는 오버뷰 화면으로 보시면 됩니다.

사실 NetworkMiner나 앞으로 나올 NetWitness에 비해 완성도가 떨어지는거 아니냐는 시각도 있겠지만
RAW 데이터와 연계되는 분석 구조나 뭐 기타 등등 어떤 면에서 가장 강력하다고 생각합니다.

세션별로도 추가 정보를 확인 할 수 있습니다.

NetWitness Investigator
이거 참...뭐라고 말을 시작해야 할지... 최근 EMC RSA에서 세미나를 한거 같은데, 물론 저는 못가봤습니다.
하지만, 세미나 안내 광고를 보고 올게 왔구나 생각을 했죠. 이미 아시는 분들은 다 아시겠지만..
이 프로그램이 포함된 이 글을 이제야 블로그에 올리는 이유는 네트워크 포렌식을 처음 접하는 분들이 어느정도
문제 해결 역량을 갖춘 후 이런 도구를 접하길 바랬기 때문입니다.
아무튼 이 강력한 도구는 유료 버젼도 있지만 설치하고 인증하면 기능 제한이 있는 무료 버젼을 쓸수 있습니다.
1G 이하 패킷만 처리해주는데요. 뭐 대형 네트워크 분석을 할 것이 아닌 포렌식?용도라면 충분히 쓸만하더군요.
초기엔 패킷 저장 경로명에 한글이 있으면 임포트에 문제가 있었는데 요샌 어떤지 모르겠네요.

이 프로그램의 인터페이스 중 상단바에 분석 위치 네비게이션은 예전에 소개한 Nuix 에서 제공하던 기능과
비슷하지만 좀 더 정돈된 느낌이죠. 아무래도 레코드 포맷이 패킷 한가지 형태라 그런듯...
프로그램의 장점을 극단적으로 보여주는 채팅 분석 화면

위에 소개 해드린 도구 하나하나가 값어치 있는 도구들인데.. 이런게 무료라서 업체들은 뭐 먹고 사나 하는 걱정에
잠을 설치기도 했어요. 오픈소스 프로젝트 진행하시는 분들이나 도구를 무료로 공개해주고 있는 업체에 늘 감사하고 있습니다.
그런데 호의가 계속되면 권리인줄 알아서 이젠 돈주고 못 쓰겠네요.

그렇다고 제가 유료 소프트웨어나 장비를 싫어하거나 차별하는 사람은 아닙니다. 악수 거부 안해요.
비용만큼의 값어치를 갖는 프로그램이나 도구는 적극적으로 접근하지요.

아 아래 링크를 참고하시면 더 많은 정보를 얻을 수 있습니다.
Tools:Network Forensics

카빙으로 재미보기 : sqlite3 백배강화

SQLite는 소형 모바일(포터블) db다. 엔터프라이즈급의 성능은 안나와도 간편히 활용하기 적절하게 되어있다.
때문에 많은 프로그램에서 이를 이용하고 있다. 인터넷 브라우저들(파이어폭스, 크롬 등)이 대표적이긴한데,
모바일 앱들은 대부분이 이를 활용하고 있다. 물론 SQLite급으로 다른 애들도 많이 있지만, 라이센스 문제 때문일지
아무튼 많이들 쓰고 있다. iOS, 안드로이드 가리지 않는다.
때문에 소위 '증거'가 그 안에서 튀어 나올 가능성이 굉장히 높아진다.

실제로 SQLite 카빙으로 재미를 좀 봐서 신나는 마음으로 공유하지만, 귀찮은 일은 최대한 자제하며
그 내용을 이전에 올렸던 URL 카빙한 포스트 처럼 가볍게 올리려고 대기중이였던 어느날...

어쩐일인지 실무에서 급히 만들었던 코드들이 싹다 지워졌고-_-;;; 찾을수가 없어서 어쩔수 없이 대충 다시
만들고 있던 무렵, 최근 오픈한 국내 포렌식 인력을 위한 전문 포럼 FORENSICINSIGHT에 고수 proneer님이
올리신 글을 보게 되었는데, 이거 나는 독자들을 전혀 고려하지 않는 막되먹은 블로거였구나 하는 반성에 휩싸였다.

결국 임시 일회용 코드를 재사용 가능한 형태로 좀 바꾸고 뻔한 오류도 좀 수정도 하고... 유니코드 문제 같은
일반적인 문제들도 좀 대충 손보고 해서 만들었다. 난 프로니어님 처럼 w32는 안되겠고 역시 파이썬으로...

□ 사전 자료 조사
역시 마찬가지로 원래 아는게 없으니깐 자료 조사가 필요했다. 당장 분석 해야 할때 이 짓을 하니 답답하긴 하더라.
SQLite 파일 구조 정보 : The SQLite Database File Format
소시지 공장 아저씨 SQLite 카빙 포스팅* : Carving SQLite databases from unallocated clusters
고대 임성수님의 발표자료 : SQLite 데이터베이스 파일 카빙 방안 연구
진짜 검색 아무리 해봐야 위에 정보가 딱이다. 이쪽 관심 있으신 분들은 소시지 아저씨랑 임성수님 자료만
잘 보시면 될 듯 싶다. 이런게 먼저 나와서 다행히 좀 시간 절약을 했다.
고대에서 만든 도구가 있긴할꺼 같은데... (자주)구걸하기도 좀 그렇고 해서...

□ Carving
비할당 영역 뽑는거나 카빙 대상 선정은 예전 포스팅을 참고하시면 될 것 같고... 아무튼 짠 코드..짜잔
오해를 하지 말아야 할 부분이... 삭제된 레코드를 카빙하는게 아니고 그냥 삭제 파일을 카빙하는 것이란 것!

sqlite3f_carver.py

원래 소스 파일이랑 결과 폴더는 하드코딩 하는데 어쩔수 없이? 입력으로 받았어요.
테스트 데이터로 몇가지 실무 데이터를 써봤는데 그럭저럭 잘됩니다. 여기선 어디선가? 문제용으로 제출된
아이폰 이미지입니다.

카빙하면서 carved+offset으로 파일명에 저장해요.
카빙이 끝나면 몇개 했는지 알려주죠. 제법 많이 됩니다.

근데 오탐이 많아요. 눈으로 봐도 오탐같은애가 많죠?-_-
하지만 이중에 중요한 증거들이 많이 나온답니다.

□ Report
위에서 본대로 적게는 200개 때론 1,000여개를 웃도는 파일을 카빙했는데, 이걸 일일히 열어보다가
눈도 무진장 아프고, 빡쳐서 하나 더 만들었다.

sqlite3f_report.py

각 파일별로 돌아가면서 테이블 목록을 얻고 테이블마다 샘플 레코드를 뽑아 출력합니다.
sqlite3 연결시나 쿼리 실행 중에 오류나는건 따로 표기하고요. 여기서 오탐 된건 버릴수 있지요.
역시 끝나면 통계를 알려줘요.

결과 파일을 보면 아래 처럼 뽑아주는데, 한글을 위해 유니코드는 UTF-8로 변환해서 출력합니다.
사실 그런 부분까진 원래 코드에 없었는데 이번에 삽질하면서 만듬 ㅠㅠ

□ 후기
이걸 어따 쓰나 하고 보고 계신분도 나중에 SQLite 카빙할 필요 있을때 번뜩 생각나서 다운 받는 날이 오실것임
특히 카빙과 상관없이 sqlite3f_report는 무진장 유용=_=
이런게 아직도 없었다는게 한탄스러울뿐... 앞으로도 필요한건 그때 그때 만들고 모아야겠다.

도덕적으로 완벽한 코드라서 허점을 남기면 안되지만 기반 지식 부족과 코딩 실력 부족으로 오류가 반드시
있을텐대 혹시 돌리시다가 문제 있는건 알려주세요.

1 2 3 4 5 6 7 8 9 10 다음


[위자드팩토리] 트위터 위젯

간단 메모














구글리더공유

내 전자서재


encykei[at]gmail[dot]com