전체 글 51

LLVM 난독화 (feat. 기법 3가지)

https://github.com/obfuscator-llvm/obfuscator/wiki/Installation 2021 화이트햇 문제를 풀다가 Control Flow Flattening(CFF)이라는 기법을 알게되어서 정리를 해보려고한다. LLVM이란? C, C++, Objectiv-C, Swift, Scala 등을 컴파일할 수 있는 컴파일러 이다. LLVM 난독화 컴파일 단에서 Intermediate Representation (IR) 수준의 코드난독화를 해준다. ( https://github.com/obfuscator-llvm/obfuscator/wiki ) 여기서는 3개의 LLVM 난독화를 제시해 놓았다. 각각의 난독화를 적용하여 어떻게 코드가 바뀌는지 예시 링크를 걸어 두었고, 3개의 난독화를..

ETC 2022.01.26

다크사이드(DarkSide) 랜섬웨어 분석

美 최대 송유관 마비시킨 '다크사이드 랜섬웨어' 해당 악성코드 분석을 통해 IOCP, UAC Bypass, I/O우선순위, 세션ID를 이용한 프로세스 생성 등에 대한 개념을 배웠다. (운영체제에 대한 지식이 좀 필요했던 것 같다.) 아,,, 분석보고서는 완성하지 않았다... 나머지 부분은 안봐도 뻔...... (그렇다고 내가 잘해서는 아니다) idb (주석포함) 이 링크 꼭 읽어보길 추천한다. ( 윈도우 세션을 이용한 프로세스 생성?) (https://stackoverflow.com/questions/301290/how-can-i-o-priority-of-a-process-be-increased) IO우선순위를 3으로 셋팅해준다. NtSetInformationProcess API 호출을 통해 프로세스의 ..

Malware 2022.01.21

exe -> pyc -> py 디컴파일

https://github.com/extremecoders-re/pyinstxtractor ----- exe to pyc (pyinstxtractor.py) https://m.blog.naver.com/osthus/221720537341 [python] pyinstaller로 만든 exe에서 코드 가져오기 * 개인적으로 찾아보고 시도한 과정들을 기록해두는 글입니다. (python 3.7 기준) 파이썬으로 만든 exe 파... blog.naver.com pyc to py https://www.youtube.com/watch?v=zimf8UDywao https://github.com/zrax/pycdc GitHub - zrax/pycdc: C++ python bytecode disassembler and d..

analysis TIP 2022.01.13

COM(Component Object Model)의 개념 잡기

COM에 대한 개념을 알고자 여러가지 블로그를 찾아본 결과 아래의 링크들이 설명이 잘되어있다. http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=762 팁스소프트 > MFC/API 가이드 > [교육자료] COM(Component Object Model)의 개념 - Step 1 [교육자료] COM(Component Object Model)의 개념 - Step 1 글쓴이 : 관리자 트랙백 주소 : http://www.tipssoft.com/bulletin/tb.php/FAQ/762 팁스소프트에서 제공하는 프로그래밍과 관련된 자료나 정보들을 무단으 www.tipssoft.com http://www.tipssoft.com/bulletin/board.p..

ETC 2021.11.21

[COM 객체] 가상 멤버함수 후킹 !

COM컴포넌트의 객체 멤버함수를 후킹할 일이 생겨 공부했던 부분들을 정리해 본다. COM - COM(Component Object Model)이란 한마디로 어떤 프로그램이나 시스템을 이루는 컴포넌트들이 상호 통신할 수 있 도록 하는 메커니즘이라고 할 수 있다. - 서로 다른 프로세스 혹은 머신 사이에서 어떤 객체를 쉽게 다루기 위한 기술 라고한다^^ COM Interface 위 사진은 IFileOpenDialog의 인터페이스 이다. 가상 멤버함수로 선언된 것들 중 GetResults를 후킹하려 한다. [참고] 여기서, 인터페이스 이름 FileOpenDialog 앞에 I를 붙인 것을 볼 수 있는 데, MFC에서 CWnd처럼 클래스 이름 앞에 C를 붙이는 것과 마찬가지로 인터페이스는 이름 앞에 I를 붙여서 ..

ETC 2021.11.14