Diary/1~100(101)
-
41일차 파이썬 CDR 개발 - 2
오늘은 Directory의 구조에 대해 알아보려고 한다. Name : 0x52 0x6F 0x6F 0x74 0x20 0x45 0x6E 0x74 0x72 0x79 Name Length : 0x16 Type : 0x05 ※ 0–Empty, 1–Storage, 2–Stream, 3–Lock Bytes, 4–Property, 5–Root Storage Node Color : 0x00 ※ 0-Red, 1-Black Left Node : 0xFF 0xFF 0xFF 0xFF Right Node : 0xFF 0xFF 0xFF 0xFF Child Node : 0x01 Start Sector ID : 0x04 Object Size : 0x2140 Python
2020.10.13 -
40일차 파이썬 CDR 개발 - 1
내가 CDR을 개발하려고 했지만 정작 파일구조에 대한 제대로 된 이해가 없었다는 생각이 들었다. 대략적인 이해로 프로그램을 만들려고 했었다니 스스로에 대한 반성을 깊게 했다. 앞으로는 어떤 개발을 하던 간에 완벽한 이해를 토대로 개발을 해야된다는 것을 많이 느꼈다. 그래서! 오늘이! 제대로 된 CDR 프로그램을 개발하기 위한 첫 출발인 날이다. Header Signature : D0 CF 11 E0 A1 B1 1A E1 Version : 0x3E, 0x03 Byte Order : FE (Little - Endian) FF (Big - Endian) BBAT Size : 0x09 SBAT Size : 0x06 BBAT Depot Count : 0x07 Root Storage ID : 0x02 SBAT Re..
2020.10.10 -
39일차 파이썬 백신개발 -14
오늘은 CDR하는 범위를 늘리고 사용자에게 직접 파일경로를 입력받도록 소스코드를 변경했다. 이제부터는 여러 옵션을 추가해 볼 예정이다. 스트림과 스토리지 목록을 보여주거나 헥스값을 보여주는 그러한 옵션들을 추가해볼까한다.
2020.10.09 -
38일차 파이썬 백신개발 -13
드디어.. 실마리를 찾고! OLE객체 전체 무해화에 성공했다. 한글문서 내부 스토리지 BinData에 들어있는 모든 스트림의 값을 0으로 치환해버리는! 소스코드를 만들었다. 누군가는 정말 쉽게 만들겠지만 나처럼 파이썬 초보자가 만들기에는 정말 고난의 연속이었다. 매일매일 고민하고 생각했는데 이렇게 만드니까 정말 뿌듯하기 그지없다. 이제는 OLE객체만이 아니라 다른 콘텐츠도 무해화할 수 있는지 생각할 예정이다.
2020.10.08 -
37일차 파이썬 백신개발 -12
도대체 어떻게 하면 BinData 스토리지 안에 있는 스트림만 출력할 수 있을지에대해 계속 고민해보다가 결국 답을 찾았다. 고민할 때는 정말 답이 안보이고 답답했는데 막상 답을 찾으니까 너무 허무하고, 이 쉬운걸 왜 여태까지 몰랐던 걸까라는 생각이 계속 든다. 그래도 뿌듯함은 있으니 다행이다. 독학으로 공부하려니까 헤딩을 너무 많이하게되고 진도도 느리지만 뭔가 해냈다는 기분은 정말 많이 든다.
2020.10.07 -
36일차 파이썬 백신개발 -11
소스코드 분석 prefix = 스토리지의 현재 위치, 루트 디렉토리를 포함한 모든 스토리지의 목록을 보여준다. node = 현재 노드 = node.name : 노드를 문자로 보여준다. entry = 스트림 목록을 보여준다 entry.entry_type == STGTY_STORAGE = 여기서 entry_type이란, 디렉토리의 타입 값을 말한다. 한글 파일에는 디렉토리 타입이라는게 존재하는데, 이는 아래와 같다. 0 : Empty 1 : Storage 2 : Stream 3 : Lock bytes 4 : Property 5 : Root Storage 즉, 위의 소스코드는 1번 스토리지에 해당하는 값과 2번 스트림에 해당하는 값을 보여주는 소스코드이다.
2020.10.06 -
35일차 파이썬 백신개발 -10
오늘은 Stream의 경로를 입력받아서 Hex값을 전부 0으로 치환하는 소스코드를 작성해봤다. 모듈에서 원하는 명령어의 코드를 수정하는게 쉽지 않은 일이라는 것을 뼈저리게 느끼며... 앞으로도 공부할게 많다는 것과 타인이 개발한 소스코드를 알아볼 수 있도록 실력을 향상시켜야 한다고 많이 느꼈다.
2020.10.05 -
34일차 파이썬 백신개발 -9 2020.10.04
-
33일차 파이썬 백신개발 -8
WinHex로 한글파일을 열어보면 OLE 파일은 '4F 00 4C 00 45'이고, BIN 파일은 '42 00 49 00 4E' 이다. 고민해봤을 때, OLE파일을 모두 무해화를 하기 위해서는 모든 OLE파일의 값을 0으로 변경하면 된다는 생각이 들었다. 우선은 olefile 모듈을 이용해 OLE파일의 값을 0으로 치환할 수 있는지 확인해봤다. 위의 코드를 실행해서 SSViewer로 파일을 열어 제대로 값이 바뀌었는지 확인해봤다. 성공적으로 값이 변경이 됬으며, OLE 스트림이 무해화가 된 것을 확인할 수 있었다. 이제 고민해야할 부분은 1. OLE 객체의 바이너리 값을 Hex 값을 통해 찾아서 전체 무해화를 할 수 있는가? 2. 각각의 스트림을 비우는게 아니라 BinData의 스토리지 안의 스트림 전체..
2020.10.02 -
32일차 파이썬 백신개발 -7
OLE 위치를 찾고 파싱하기 위해서 한참을 찾아다니면서 결국 찾아냈다. 그건 바로 파이썬에는 olefile이라는 모듈이 존재한다는 사실이었다! olefile을 통해 파일에 존재하는 스토리지와 스트림의 목록을 알 수 있었다. 그리고 hexdump라는 모듈도 발견했는데, 이 모듈은 파일의 hex값을 보여주는 모듈이다. ============================================== olefile 외에도 아래와 같은 포렌식 모듈이 존재한다. python-oletools: a package of python tools to analyze OLE files and MS Office documents, mainly for malware analysis and debugging. It includ..
2020.10.01 -
31일차 파이썬 백신개발 -6
현재 개발하는 프로그램의 목표 공부 및 자료수집 중인 내용
2020.09.30 -
30일차 파이썬 백신개발 -5
한글파일에 대한 내부 구조를 분석하고 싶어서 열심히 구글링을 해봤더니 SSViewer라는 분석 툴이 있었다. 이러한 프로그램을 만들어준 개발자분께 무한한 감사인사를 드리고싶은 심정이다. 파이썬을 처음 접해보니 파일을 열고 읽는 방법을 터득하는데만 한참이 걸린 것 같다. 여차저차해서 코드를 짜보니 너무 간단해서 헛웃음이 나왔다. 아무튼, 위의 코드를 이용해 한글 파일의 바이너리 데이터를 읽어봤다. b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>\x00\x03\x00\xfe\xff\t\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x..
2020.09.29 -
29일차 파이썬 백신개발 -4
---------------------------------------------- PY3 = sys.version_info.major == 3 # PY3은 파이썬 3.xx 버전을 뜻한다. sys.version : 현재 파이썬 인터프리터의 사람이 읽을 수 있는 버전정보가 포함 된 문자열을 반환한다. 그러나 '주 릴리스 번호' 및 '마이크로 릴리스 번호'와 같은 정보는 코드에서 추가로 사용하기 위해서 추가 처리가 필요하다. sys.version_info : 버전 정보를 명명 된 튜플로 반환하여 이 문제를 쉽게 해결한다. - 반환되는 버전 데이터 - majar : 주요 출시 번호 micro : 패치 릴리스 번호 minor : 부 릴리스 번호 releaselevel : '알파' , '베타' , '후보자' 또는..
2020.09.28 -
28일차 파이썬 백신개발 -3
__future__ : improt 문을 분석하고 import하는 모듈을 발견하리라고 기대하는 기존 도구가 혼동하지 않게 하려고 쓴다. 즉, __future__는 파이썬 2와 3의 버전 차이로 인해 생기는 문제를 방지하고 호환이 되도록 하기 위해 사용한다. 2의 기능을 3에 가져와서 사용할수있다. from__future__ import absolute_import : 이를 사용하면 절대 임포트(absolute_import)를 기본으로 만들 수 있다. 예를들어, glux.draw.pixmap 모듈에서 import cairo하면 glux.draw.cairo, glux.cairo, cario 순으로 임포트를 시도한다. 만약 glux.draw.cairo라는 모듈이 우연히 존재했다면 원래 의도했던 cario 모듈..
2020.09.27 -
27일차 Code Up 문제풀이
보호되어 있는 글입니다.
2020.09.26 -
26일차 Code Up 문제풀이
보호되어 있는 글입니다.
2020.09.25 -
25일차 파이썬 백신 제작 -2
악성코드 탐지 프로그램을 처음 만들어봤다. 파이썬을 더 공부해서 이것저것 기능을 더 첨부해서 완성도를 높이고싶다.
2020.09.24 -
24일차 Code Up 문제풀이
보호되어 있는 글입니다.
2020.09.23 -
23일차 파이썬 백신 제작 - 1
우선은 악성코드 DB와 매칭 DB를 코드를 작성했다. 파이썬을 처음해보니 C언어와 비슷하지만 다른부분이 너무 많아서 오히려 C언어를 배운게 파이썬을 배우는 데에 있어서 방해가 되는 느낌을 받았다. 아마도 내가 C언어에 아직 미숙해서 그렇게 느끼는 것 같다.
2020.09.22 -
22일차 Code Up 문제풀이
보호되어 있는 글입니다.
2020.09.20 -
21일차 C언어 Code Up 문제풀이
보호되어 있는 글입니다.
2020.09.19 -
20일차 C언어 Code Up 문제풀이
보호되어 있는 글입니다.
2020.09.18 -
19일차 C언어 Code Up 문제풀이
보호되어 있는 글입니다.
2020.09.17 -
18일차 C언어 Code Up 문제풀이
보호되어 있는 글입니다.
2020.09.17 -
17일차 C언어 Code Up 문제풀이
보호되어 있는 글입니다.
2020.09.15 -
16일차 Code Up 1099 : 성실한 개미
보호되어 있는 글입니다.
2020.09.14 -
15일차 C언어 Code Up [2차원 배열] 문제풀이
보호되어 있는 글입니다.
2020.09.13 -
14일차 C언어 Code Up [1차원 배열] 문제풀이
보호되어 있는 글입니다.
2020.09.12 -
13일차 C언어 Code Up 문제풀이
보호되어 있는 글입니다.
2020.09.11 -
12일차 C언어 Code Up 기초문제
보호되어 있는 글입니다.
2020.09.10