sweetchip's blog


요즘 한창 개발중인 프로젝트 sweetmon 입니다.


sweetmon 은 제 닉네임 sweetchip 과 monitor 가 합쳐져서 그냥 퍼져와 크래시를 모니터링 한다는 의미로


재미로 만들고 있는 프로젝트 입니다.



원래 이번이 처음은 아니었고 예전 브라우저 버그헌팅시 여러 VM에서 퍼져를 돌리고 한곳으로 모을때 잠시 php 버전으로 만들었는데


너무 귀찮아서 중간에 때려쳤다가 다시 퍼징할 일이 생기기를 몇번을 반복하다 보니


그때마다 편의를 위해 계속 크래시를 한곳으로 모아주는 것을 만들어야 하는 일이 있었습니다.


이번에도 그런 일이 있어서 그냥 이참에 하나 다시 만들자라고 생각해서 같은 동아리 부원인 @shc 의 추천으로 Django 를 접하게 되었습니다.



웹 개발이라고는 PHP와 HTML로 살짝 건드려본 적 밖에 없어서 웹 개발쪽 시야가 좁았던 저에게는


장고 라고 하는 프레임워크를 다루다보니 엄청난 신세계였습니다.


PHP보다 개발이 훨씬 간단하고 코드의 양도 확실히 줄면서 재미를 붙이다보니 기능도 계속 넣게되고..


지금까지 오게 되었네요. 




이번 포스팅의 사진은 거의 모자이크밖에 없지만..


실제로 돌리고 있는 모습입니다.


웹서버(Python+Django+Apache) 에서는 Fuzzer와 Machine / Crash들의 정보를 받아와서 저장하고 뿌려주는 API를 제공해줍니다.


예를들어 server.com/fuzz/crash 는 크래시가 발생했을 경우 업로드 기능을 지원합니다.


이외에 현재 제보했던 버그 리스트를 저장할 수 있도록 간단한 메모 기능을 만들었습니다.



기능을 간단히 정리해보면..


퍼져 및 머신의 정보 출력 / 크래시 업로드 및 업로드 된 크래시 리스팅 및 정보 출력 + 1회용 다운로드 링크

Fuzzer 업로드/다운로드 기능, Testcase 업로드/다운로드 기능

리포팅한 버그들 메모 기능

새로운 크래시 텔레그램 및 이메일 알림 기능


등이 있겠네요.


상세한 기능들은 나중에 다시 정리 하는걸로 하고..


아무튼 sweetmon 을 만들게 된 계기는 윈도우에서든 리눅스에서든 맥에서든 어디서든지 어떤것을 퍼징을 하든


한곳으로 잘 모아주는 것을 원했습니다.


그래서 본인이 만든 퍼져나 AFL같은 퍼져등을 이용해도 sweetmon을 이용할 수 있도록 만드려고 노력하는 중입니다.


하지만 제가 개발 경험이 그리 많지는 않아서 쉽지만은 않네요.






서버가 있으면 클라이언트도 있어야겠죠?


클라이언트는 Python 언어를 기반으로 서버에서 제공하는 API들을 래핑하여 쉽게 사용할 수 있도록 제공할 예정입니다.


현재 목표 코드는 sweetmon.py 및 config.py 만 나눠주고 그것을 이용해서 본인의 퍼져에 맞출 수 있도록 하는 것이 목적입니다.


그냥 퍼징 프레임워크라고 보시면 됩니다.


아래 예제 코드를 보시면..


from sweetmon import *


count = 0

F = Fuzzer(fConfig)

while 1:

if count % 1000 == 0:

F.ping() # 서버에 핑 날림

log = run("windbg ... ... ./fuzzer.exe") # windbg에서 생성된 로그파일 받아옴

if CheckCrash(log) == True: # CheckCrash 는 로그에서 크래시가 발생했는지 여부를 체크해주는 함수

F.upload("0023:41414141=????????", "./testcase1234.log", "./testcase1234.file") # 서버에 Title 과 크래시 로그 업로드.

count += 1




위는 제가 대략 생각하고 있는 것인데..


만약 직접 만든 Fuzzer든 AFL같은 퍼져를 이용하든 로그파일을 분석하는건 모든 퍼져마다 다른건 당연하니


퍼져 돌리는 함수 / 크래시인지 아닌지 판별하는 함수등은 각각 알아서 제작 하도록 합니다.


클라이언트에서 제공해 주는 것은 핑 날리기 / 파일 업로드 (Title, 크래시 로그, 크래시파일) 등 서버와 통신에 필요한 기능만 제공합니다.


그래서 어느 운영체제에서든 python만 지원되는 환경일때 각 퍼져에 맞게 간단한 코딩만 해주면 퍼져 및 크래시를 서버에서 모니터링을 할수 있게 됩니다.




추후엔 암호화 기능도 넣고 여러 유저가 크래시를 공유하는 기능도 만들고 지금 있는 버그도 고치고 여러가지 할게 많네요.


제가 주로 쓸 용도로 만드는 것이긴 하지만 오픈소스로 공개할 예정도 있습니다. (물론 쓸 사람이 있을진 모르겠지만요.. ㅠ)


하지만 언제가 될진 모르겠네요 ㅋㅋ


시험기간에 심심해서(!?) 오랜만에 적어봤습니다.

저작자 표시 비영리 변경 금지
신고

'0x10 정보보안 > 0x11 security' 카테고리의 다른 글

sweetmon 릴리즈!  (1) 2017.09.23
sweetmon 진전 상황  (4) 2017.08.16
요즘 개발중인 퍼져 모니터링 시스템[?]  (5) 2017.04.23
GITHUB 업데이트 완료!  (0) 2017.04.04
무료 SSL 인증서 발급 받기 (letsencrypt)  (0) 2017.02.02
MSRC Top 100 선정!  (5) 2015.08.16

Comment 5

  • BBB
    2017.04.23 17:50 신고 수정 답글

    혹시 프론트엔드부분은 어떻게 만드셨는지 물어볼수있을까요 ?

    • 2017.04.24 03:52 신고 수정

      프론트엔드 역시 Django에서 뿌려주도록 만들었습니다. (P.S 테마는 Dashgum Free 테마를 이용했습니다)

  • BBB
    2017.04.24 16:46 신고 수정 답글

    감사합니다 ~ 테마가 괜찮아서 물어봤어요 ~

  • 2017.05.15 17:28 수정 답글

    비밀댓글입니다

  • 2017.09.22 12:56 수정 답글

    비밀댓글입니다