인기 글

[악성코드분석] IDA Python 레퍼런스 모음

IDA Python 레퍼런스 목록이다. IDA 파이썬 공식 API 레퍼런스: https://www.hex-rays.com/products/ida/support/idapython_docs/ IDA 파이썬 공식 예제 모음: https://github.com/idapython/src/tree/master/examples IDA 파이썬 가이드 모음: https://reverseengineering.stackexchange.com/questions/11391/good-training-for-idapython IDA 파이썬 간단 가이드 (한글): https://suspected.tistory.com/244?category=773669 Action 의 등록과 사용 http://www.hexblog.com/?p=886..

분석 팁 2022.05.17 0

[Windows 리버싱] 32bit, 64bit 환경에서의 Syscall 구현 방식에 대한 설명

64bit 기준으로 Native API를 호출하기 위해선 다음과 같은 방법으로 커널모드로 진입함. rcx는 syscall 내부에서 사용되기 때문에 r10에 백업하는 과정을 거치고, eax에 Naitve함수의 인덱스를 넣고 syscall(KiFastSystemcall)을 통해 커널모드로 진입함. 내부에선 eax로 넘어온 함수의 인덱스를(SSDT의 인덱스) 통해 함수를 찾고 호출함. ;NtCreateFile 호출 mov r10, rcx ; NtCreateFile mov eax, 55h syscall 그래서 함수의 SSDT에서의 인덱스 값만 알고 있다면 위 방식 처럼 Direct Syscall이 가능함. 32bit에서는 어떻게 하는지 궁금해서 확인해봤는데 syscall은 없고 edx에 특정 주소 삽입하고 ed..

분석 팁 2023.04.30 0

iptime 공유기에서 DDNS 안전하게 사용하기

WOL은 컴퓨터에 특수한 패킷을 전송하여 컴퓨터의 전원을 켜는 기능이다. 외부에서 접속을 하기 때문에 최소한의 보안 설정을 해주어야 한다. 이번에는 iptime의 공유기 설정을 통해서, 외부에서 안전하게 공유기에 접근할 수 있는 방법에 대해서 서술하겠다. 1. 원격 관리 포트 설정하기 첫 번째로 포트를 지정해주는 방법이다. 포트 설정을 해주지 않으면 외부에서 DDNS로 설정된 URL로 쉽게 접속할 수 있다. 그러므로 포트를 지정해주는 것이 조금 더 안전하다. 메뉴탐색기 탭 → 고급 설정 → 보안 기능 → 공유기 접속/보안관리 탭을 통해서 원격 관리 포트를 설정해줄 수 있다. 다음 그림과 같이 원격 관리 포트를 설정해준다. 만약 DDNS: “abc.iptime.org” 일 때, 원격관리 포트를 사용 하지 ..

카테고리 없음 2022.05.17 0

[차량보안] 3편: 패킷 주입(Injection) 및 제어권 탈취

앞선 과정에서 특정 기능을 수행하는 CAN ID를 식별했다면, 이제는 직접 조작된 패킷을 버스에 주입하여 실제 컨트롤러 없이도 차량을 제어하는 패킷 주입 공격(Packet Injection)을 실습합니다.1. 공격의 핵심 원리: Race Condition 및 Bus Flooding정상적인 상황에서는 실제 ECU가 주기적으로 정해진 상태값(예: 속도 0km/h)을 쏘고 있습니다. 공격자가 가짜 데이터(예: 속도 200km/h)를 한 번만 보내면, 수신단인 계기판은 다시 들어오는 정상 데이터에 의해 즉시 원래 상태로 돌아갑니다.공격 전략: 실제 ECU가 보내는 신호보다 훨씬 빠른 주기(예: 10ms 이하)로 조작된 패킷을 지속적으로 주입(Flooding)합니다. 수신단은 가장 마지막에 들어온 유효 패킷을 기..

카테고리 없음 2026.01.24 0

최신 글

more

[차량보안] 4편: 리플레이 어택(Replay Attack) 및 보안 대책

실습 시리즈의 마지막 단계로, 분석 과정 없이도 정상 패킷을 재사용하여 공격하는 리플레이 어택(Replay Attack)을 실습하고, 이러한 위협을 원천적으로 차단하기 위한 보안 메커니즘을 살펴봅니다.1. 리플레이 어택(Replay Attack)의 원리차량 내부의 많은 ECU는 수신한 패킷이 '지금 생성된 것'인지, 아니면 '과거에 생성된 것'인지 구분하는 능력이 부족한 경우가 많습니다.공격 원리: 정상적인 차량 동작 패킷을 녹화(Sniffing)하여 저장해두었다가, 나중에 동일한 순서와 간격으로 버스에 다시 주입(Injection)하는 공격입니다. 패킷의 페이로드를 완전히 분석하지 못하더라도 유의미한 공격 성과를 낼 수 있습니다.2. 실습 1: can-utils를 이용한 단순 재현can-utils의 c..

카테고리 없음 2026.01.24 0

[차량보안] 3편: 패킷 주입(Injection) 및 제어권 탈취

앞선 과정에서 특정 기능을 수행하는 CAN ID를 식별했다면, 이제는 직접 조작된 패킷을 버스에 주입하여 실제 컨트롤러 없이도 차량을 제어하는 패킷 주입 공격(Packet Injection)을 실습합니다.1. 공격의 핵심 원리: Race Condition 및 Bus Flooding정상적인 상황에서는 실제 ECU가 주기적으로 정해진 상태값(예: 속도 0km/h)을 쏘고 있습니다. 공격자가 가짜 데이터(예: 속도 200km/h)를 한 번만 보내면, 수신단인 계기판은 다시 들어오는 정상 데이터에 의해 즉시 원래 상태로 돌아갑니다.공격 전략: 실제 ECU가 보내는 신호보다 훨씬 빠른 주기(예: 10ms 이하)로 조작된 패킷을 지속적으로 주입(Flooding)합니다. 수신단은 가장 마지막에 들어온 유효 패킷을 기..

카테고리 없음 2026.01.24 0

[차량보안] 2편: 가상 CAN 패킷 분석 - '진범(ID)' 찾기 (Sniffing)

1편에서 실습 환경 구축을 마쳤다면, 2편에서는 CAN 패킷 사이에서 특정 기능을 수행하는 CAN ID와 데이터 위치(Byte/Bit)를 식별하는 '시그널 역공학(Signal Reverse Engineering)' 단계를 진행합니다.1. 패킷 스캐닝 도구: candump & cansniffer가장 먼저 사용할 도구는 can-utils 패키지에 포함된 candump와 cansniffer입니다.① candump를 활용한 로우 데이터 관찰# vcan0의 모든 패킷 실시간 출력candump vcan0명령 실행 시 초당 수백 개의 패킷이 쏟아집니다. 이는 대부분 시스템의 정상 동작을 알리는 일종의 '하트비트' 신호이며, 눈으로 유의미한 시그널을 찾기는 불가능에 가깝습니다.② cansniffer를 활용한 변화 추적..

카테고리 없음 2026.01.24 0

[차량보안] 1편: WSL2 환경 구축 및 가상 자동차(ICSim) 시동 걸기

차량 내부 통신망인 CAN(Controller Area Network) 프로토콜 분석을 위해, 오픈소스 시뮬레이터인 ICSim(Instrument Cluster Simulator)을 활용한 실습 환경 구축 과정을 정리합니다.1. 분석 환경 설정: Ubuntu 환경 설치Windows의 WSL2 기본 커널은 가상 CAN 인터페이스인 vcan 모듈을 포함하지 않는 경우가 많아 설정이 까다롭습니다. 따라서 원활한 실습을 위해 Native Ubuntu나 VM(Virtual Machine) 환경 사용을 권장합니다.(윈도우 기본 WSL 커널이 모든 자동차 관련 모듈을 포함하지 않는다고 한다) # 시스템 업데이트 및 필수 의존성 설치sudo apt updatesudo apt install -y libsdl2-dev l..

보안 2026.01.23 0

[파이썬] pefile 라이브러리를 활용하여 IAT 복구 프로그램 제작하기 (2)

5/27 메모한거 그대로 포스팅한 똥글이라 추후에 수정할 예정 왜냐면 아무도 안봐주는 글이기 떄문이지 pefile 라이브러리 설치 pip install pefile 자 가보즈앗 자 먼저 테스트 파일을 만들어야겠지? 가장 간단한 64bit notepad.exe로 프로세스 덤프를 생성해보자 실행 후 notepade.exe 모듈을 덤프한다. 아주 잘 생성됐다. 실행해볼까? 당연히 실행안된다ㅋㅋ PE로더는 기본적으로 PE File의 헤더를 참조하여 메모리에 프로세스를 올리는데 지금 이 덤프파일은 헤더는 멀쩡하지만 섹션의 구조가 다 망가져있기 때문이다. 자 그럼 일단 프로그램부터 까보자 pefile 라이브러리를 사용하여 덤프파일을 읽어온 후 정보를 출력해보자. import pefile dump_file = r'C..

카테고리 없음 2023.05.20 3