[인공지능 보안을 배우다] 나홀로 프로젝트 도전_1204

daniayo·2024년 12월 4일

오늘의 목표 : 데이터 수집 열심히 해보기

7장 . PJ1_악성코드 탐지 모델(데이터수집)

파이썬 크롤러 제작

웹 크롤러는 자동화된 방법으로 웹상의 정보를 탐색하는 프로그램을 의미한다.
악성코드를 제공하는 공개 데이터베이스를 크롤링하는 스크립트를 제작해 악성코드를 수집하겠다.
웹페이지는 정의(CSS), 스크립트(Javascript), 본문(html)으로 구성된다.

  • 정보 수집을 원하는 페이지에 접속 > 코드 읽어오기 > 코드 안에서 원하는 정보를 찾아 원하는 형태로 저장하기

정규표현식은 특정한 규칙을 가진 문자열 집합 표현에 사용되는 형식 언어로, 문자열을 다루는 많은 분야에서 활용되고 있다.

  • 검색 대상 문자열 결정 > 검색 대상 문자열 패턴을 정의 > 패턴에 해당하는 정규표현식 패턴 구문 작성

파이썬에서는 html 구조 해석을 도와주는 유용한 BeautifulSoup(BS) 라이브러리를 가지고 있다. BS는 사용자가 선택한 파서를 이용해 html과 xml 코드를 파싱, 검색, 수정하는 기능을 제공한다. 이 html 코드 분석 결과를 계층 구조로 저장한다.
아래는 html 태그(tag)와 속성(attributes) 값을 이용해 원하는 내용을 검색해주는 함수

  • find(tag, attributes, recursive, text, keywords)
  • findAll(tag, attributes, recursive, text, limit, keywords)

크롤러 제작 프로세스

1) 대상 웹페이지 분석
가장 빠르고 정확한 방법은 브라우저에서 웹페이지를 살펴보는 것이다.
브라우저에 기본적으로 탑재된 개발자 도구는 웹페이지 소스코드 분석과 상호작용을 도와주는 유용한 도구다.
DOM Tree를 분석해주는 도구를 활용해 최종 목적이 되는 이미지가 DOM Tree 상에서 어디에 위치하는 지 찾아보는 것도 도움이 된다.
검색을 원하는 정보 접근에 로그인 필요 여부, 페이지 요청 URL 등을 분석해야한다.

2) 크롤러 코드 제작

  • 정규표현식 정의 : 정보 검색에 사용할 정규표현식 패턴을 정의한 부분
  • 웹페이지 요청 : 대상 웹페이지에 접속한 후 페이지를 받아오는 부분
  • 웹페이지 분석/처리 : 웹페이지에서 정보를 검색해 처리하는 부분

복잡한 웹페이지의 경우 BS와 정규표현식을 모두 사용하면 좋다.
BS로 검색범위를 좁힌 후 실제 내용에 해당하는 부분은 정규표현식으로 검색하는 방법을 사용

악성코드 수집 프로그램

문제가 생겼다! 책에서 소개하고 있는 악성코드 수집 페이지는 malwaredb.malekal.com 사이트인데, 이 사이트에 오늘 들어가보니 8개월 전에 마지막 활동이 기록되어있고, 이후 활동이 없다고 한다. 사이트가 영구적으로 폐쇄되었는지 아니면 일시적으로 비활성화된 것인지에 대한 공식적인 공지는 없는 상태라고는 하는데, 내가 이걸 기다리기에는 프로젝트를 빨리 해야해서.. 다른 사이트를 찾아보기로 결정했다.
크게 2가지를 생각해보았는데

  • https://github.com/WojtylaCZ/MalwareDB/tree/master
    • 깃허브에서 제공하는 malwaredb 사이트 이다. 편하게 다운로드를 받을 수 있지만, 나의 실력을 향상시키기 위해서는(오늘 웹 크롤러 제작 방식을 공부해보기도 했고..) 웹 크롤러 제작을 해야겠다고 판단하여,, 보류하기로 하였다.
  • https://www.hybrid-analysis.com/
    • Hybrid Analysis라는 웹페이지로 악성코드 샘플과 분석 데이터를 제공하는 무료 플랫폼으로, 다양한 포맷의 샘플을 다운로드할 수 있다고 한다. 열심히 찾아보니!! (내기준) 기존의 malwaredb.malekal.com과 로그인을 해야한다는 점을 빼고는 크게 다를 것 없어보여,, 이것으로 결정하였다.

이제부터 그냥 쌩초보자의 웹 분석이므로.. 틀릴 수도 있다 ㅎㅎ!

초보자의 분석
우선 이 사이트는 파일들을 no specific threat - suspicious - malcious 세 단계로 구분하는 것으로 보인다. no specific threat 파일의 경우 정상파일로 생각할 수도 있을 것 같아서 잘하면 정상 프로그램 수집을 그냥 이것으로 해도 괜찮겠다는 생각이 들었다.
https://www.hybrid-analysis.com/file-collections?page=1
웹페이지 URL을 통하여 손 쉽게 뒷번호만 바꿔서 다음 페이지로 이동할 수 있을 것으로 보인다.
malcious 파일을 클릭하면,
File name - SHA256 (해시) - Tags - AV Result - Sandbox Report - Verdict 순으로 정보를 알려준다.

그런데! 문제가 생겼다. 다운로드를 하려고 했더니 가입하라고 해서 이건 쉽지! 하고 가입했는데 다운로드를 받으려면 인증을 받아야한다고 한다.. 말도 안돼..
나의 결백함과 개발자임을 증명할 수 있는 블로그같은? 링크 3개를 올리라고 하길래..
진짜 아무것도 아닌 감자가 악성코드 분석하겠다고 나대는 것 같아서 너무너무 부끄럽지만 뭐 어차피 안볼 외국인들이니까 velog, github, notion 탈탈 털어서 요청했다. 심지어 제목으로 'Vetting Request for Malware Research - Student Cybersecurity Project' 라고 적었다. 틀린 말은 없으니까 ^^
암튼 다운로드가 불가능한 상태라서.. 우선 악성코드 크롤러 제작은 미루기로..ㅠㅠ
내일까지 기다려보고, 만약 다운로드 허용이 안된다면! Github를 사용해 malware를 다운받아야 겠다. 딱히 더 할 수 있는 게 없어서 오늘의 공부는 우선..끝..! 찝찝하군.


허가가 나오기를 기다리면서 적는 글...(여전히 1204)

기다리다가 (한 1시간 기다린듯..?ㅎㅎ) 웹 크롤링을 한 번쯤은 써먹어보고 싶어서.. MalWareBazaar (https://bazaar.abuse.ch/) 라는 사이트를 알게되어 찾아보았다.
(여기는 회원가입도 필요없는 것 같아 개이득이다.)

데이터베이스에는 해시코드랑, type도 있어서 exe 파일만 다운받도록 하면 될 것 같고! DL 버튼을 눌러서 다운로드 페이지로 넘어간 뒤 다운로드를 할 수 있다.
근데!!!! 내가 못찾은 건지 다운로드 받을 수 있는 파일은 1000개만 있고, 그 와중에 type들도 섞여있어서 살짝.. 힘들 것 같다.. 따흑

profile
댜니에요

0개의 댓글