전체 글
[Reversing] rev-basic-6 문제 풀이
문제 정적 분석이번 문제의 main() 또한 전과 동일한 형태인 것을 확인하였다.main() 다음으로 조건문인 compare_fun() 내부는 다음과 같았다. 자세히 보면 입력값의 값을 다시 인덱스로 사용하여 값을 비교하는 것을 알 수 있다.compare_fun()다시 인덱싱을 하는 것을 확인한 후 생각한 풀이 방법은 다음과 같다.생각한 풀이 방법 byte_140003000 에 존재하는 값을 byte_140003020 에서 인덱싱한다.list.index()의 결과는 인덱스 번호이기 때문에 인덱스 번호가 실제 Flag 일 것이다 코드실제 코드를 작성하기 전 byte_140003020과 byte_140003000 값을 추출한다. 추출하는 코드는 다음과 같다.byte_140003000print(list(ida..
[Reversing] rev-basic-5 문제 풀이
문제Reversing Basic Challenge #5(dreamhack) 정적 분석해당 문제도 특정 문자열을 입력받아 compare_fun() 함수의 리턴 값이 1이 되면 해결되는 문제이다.main 함수(dreamhack) compare_fun() 함수는 i 번째 입력 값(a1)과 i+1 번째 입력 값(a1+1) 을 더한 값이 byte_140003000[i] 값과 일치해야 한다.compare_fun() byte_140003000의 byte 값을 추출하기 위해 다음과 같은 코드를 입력한다.print(list(ida_bytes.get_bytes(here(), 24)))위의 코드로 추출된 byte_140003000의 값은 다음과 같다.[173, 216, 203, 203, 157, 151, 203, 196, ..
Background:HTTP/ HTTPS
HTTP 메시지HTTP 메시지에는 클라이언트가 전송하는 HTTP 요청, 그리고 서버에서 반환되는 HTTP 응답이 존재한다. 이들은 모두 HTTP 헤드와 바디로 구성된다는 공통점을 지니고 있다. HTTP 헤드HTTP 헤드의 경우 첫 줄은 시작 줄(Start-line), 나머지 줄은 헤더(Header)라고 부른다. HTTP 바디헤드의 끝을 나타내는 줄바꿈된 줄 뒤 모든 줄을 바디라고 말한다. 해당 부분에는 클라이언트나 서버가 전송하려는 데이터가 포함되어 있다.HTTP 메시지(dreamhack) HTTP 요청HTTP 요청은 서버에게 특정 동작을 요구하는 메시지이다.HTTP 요청의 시작 줄은 메소드(Method), 요청 URL(Request-URL), HTTP 버전으로 구성되어 있다. 각각은 띄어쓰기로 구분한다..

Background:Web
해당 포스팅은 https://dreamhack.io/lecture/roadmaps/1?obj=2를 참고하여 작성하였으며 공부 목적으로 작성하였습니다.Web웹이란?인터넷이라는 통신망을 활용하여 구현된 전 지구적 정보 공간, HTTP를 이용하여 정보를 공유하는 서비스이다. 이때, 정보를 제공하는 주체를 웹 서버(Web Server), 정보를 받는 이용자를 웹 클라이언트(Web Client)라고 한다. 웹 리소스웹 리소스 정의웹에 갖춰진 정보 자산을 의미하며 http://dreamhack.io/index.html 주소를 입력할 경우 dreamhack.io에 존재하는 /index.html 경로의 리소스를 가져오라는 의미이다. 또한, 모든 웹 리소스는 URI(Uniform Resource Indicator)로 구..
Raccoon Stealer v2(2.0) 악성코드 분석(2)
○ 컴퓨터 상세 정보 탈취sstmnfo_문자열의 존재 유무를 확인한 후 다음과 같은 정보를 탈취한다.컴퓨터 기본 정보 탈취No.대상 정보사용한 API 및 레지스트리 키1Locale 정보GetUserDefaultLCIE()2표준 시간대 정보GetTimeZoneInformation()3운영체제 정보HKLM\\Current Version 하위 키4아키텍쳐 정보GetSystemWow64Directory()5CPU 정보GetSystemInfo()6RAM 정보GlobalMemoryStatusEx()7DisPlay 크기 정보GetSystemMetircs()8모니터 이름 정보EnumDisplayDevicedsW()9설치된 프로그램 목록SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\U..
Raccoon Stealer v2(2.0) 악성코드 분석(1)
Raccoon Stealer 2.0(v2)[그림 1] Raccoon Stealer v2(출처 : The Hacker News)1. 개요Raccoon Stear v1 은 2019년 4월 경 언더그라운드 포럼에서 서비스형 멀웨어(MaaS, Malware-as-a-Service)로 판매되며 발견된 악성코드이다. 2019년 이후 꾸준하게 등장하였으나 2022년 7월 Racoon Stealer v2 변종이 발견되었다. 해당 변종은 C++ → C 로 작성되었다.2. 샘플 및 분석 환경 정보악성코드명Raccoon Stealer v2(2.0)해시값(MD5)a5925dd8ecea442fb8f46fd9447f6c87Time Stamp2022/07/01 09:57:11 UTC분석 환경Windows10 64bitsIDA 버전..
x64 dbg 설치 및 플러그인 적용(악성코드분석, 리버싱)
x64 dbg란?리버싱 공부 및 War game 풀이를 할 때 사용하는 디버거 프로그램 중 하나로, 최근 가장 많이 쓰는 디버거이다. 기존에는 Ollydbg를 사용하였으나 x64dbg에 비해 UI가 노후화되었고 덜 직관적이라고 판단하여 x64dbg를 주로 사용하고 있다. x64 dbg는 총 5개의 기본 덤프 창, 내장 어셈블러, Yara Pattern 매칭, 속도가 빠른 다스어셈플러, 쓰레드 확인 등 여러 기능을 제공하고 있다.x64 dbg 설치x64dbg 설치는 아래의 링크에서 설치할 수 있다. x64dbg - Browse /snapshots at SourceForge.netAn open-source x64/x32 debugger for windows.https://sourceforge.net/proj..
[Python] 파이썬 리스트(List)
리스트(List)란? 여러 자료들을 모목록 형태로 관리하는 자료 구조로 사용 방식은 다음과 같다. #값이 없는 리스트 선언 test_list = [] print(test_list) #리스트 초기화(int 형) init_list = [1,2,3,4] print(init_list) #리스트 초기화(str 형) str_list = ['1', '2', '3', '4'] print(str_list) [출력 결과] [] [1, 2, 3, 4] ['1', '2', '3', '4'] 리스트 + "연산자" 리스트 + 리스트 자료형이 다르더라도 "리스트 + 리스트"를 할 경우 정상적으로 결합되어 출력된다. #리스트 초기화(int 형) init_list = [1,2,3,4] #리스트 초기화(str 형) str_list = ..

악성코드 분석을 위한 사이트
리버싱을 하는 사람이라면 충분히 악성코드에 대한 관심이 있을 것이다. 하지만, 막상 악성 코드를 분석하려고 할 때 "악성코드 샘플은 어디서 구하지?" 라는 걱정이 앞서며 시도도 하지 않는 경우가 많다. 앞으로 소개할 사이트는 분석이 목적인 사용자들을 위해 악성코드 정보를 공유하고 있어 새로운 악성코드나 분석하기 원하는 악성코드에 대한 정보를 확인할 수 있다.(악의적인 사용은 법적으로 처벌받을 수 있으며 사이트 상에서도 금지하고 있다) bazaar.abuse.ch 윈도우, 안드로이드 등 여러 종류의 악성코드를 공유하는 무료 사이트로 하루에 4~10개의 악성코드가 갱신되어 올라온다. bazaar 사이트는 각 샘플에 대한 해시값, 타입(exe, dll 등), 태그(exe, 악성코드 그룹, 안드로이드, apk ..

머신 러닝(Machine Learning)과 딥러닝(Deep Learning)
머신러닝(Machine Learning) 이란? 기계학습으로 불리기도 하며, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술들을 개발하는 분야(연구)이다. 머신러닝의 핵심은 표현(Representation)과 일반화(generalization)이다. 표현이란 데이터의 평가이고, 일반화란 아직 알 수 없는 데이터에 대한 처리를 의미한다. 머신러닝의 학습 종류에는 지도학습, 비지도학습, 강화학습이 존재한다. 지도학습(Supervised Learning) 지도학습은 단어에서 유추할 수 있듯이 사전에 지도를 하고 학습을 진행하는 것으로 크게 분류(Classification)와 회귀(Regression)가 지도학습에 해당된다. 이진 분류 모델을 예시로 설명하면 악성(1) 및 정상(0)에 대한 정답(결과 값, 실제..