전체 글 108

[Bootloader] UDS Service

Bootloader : 운영 체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고. 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램 UDS (Unified Diagnostic Service) : (ISO 14229 표준) 통합 진단 서비스, 진단 시스템이 차량의 ECU와 통신하기 위해 사용하는 프로토콜 역할 ① 오류 진단 ② ECU Reprogramming OTA (Over The Air) : 차량 제어기의 소프트웨어 업데이트를 무선으로 할 수 있는 기술 Session ① Default Session ② Programming Session ③ Extened Session UDS Service (1) UDS : TP (Transport Pro..

IVS 2024.02.02

[AUTOSAR] AUTOSAR_Tutorial

AUTOSAR : System Architecture → 코딩 전단계까지 (Configuration까지) AUTOSAR 장점 OTA 시 테스팅 시간, 비용 절감 가능 → 무선으로 가능하므로 잘못되면 수정 가능 (조건 : OTA 를 위해 메모리 기본 2배 이상 되어야 함 (다운로드 + 기존 동작 위함)) AUTOSAR Main Working Topics 1 .Architecture : 소프트웨어 스택 2. Methodology ① 소프트웨어를 어떻게 개발할것인지? ② 저장 포맷(표준화함) → arxml(확장자) 생성 3. Application Interfaces 더보기 Mobilgene : Authoring tool → arxml 파일 읽어서 C코드 생성해주는 tool Technical Scope of A..

IVS 2024.02.01

[OTA] UDS : TP (Transport Protocol)

1) Single Frame : 7바이트 이하의 데이터 Single Frame (1) 첫 번째 바이트(PCI : Protocol Information) : 상위 4비트 - Single Frame을 알려주는 값인 0을 담음 하위 4비트 - Data Length (2) 나머지 바이트(7Byte) (3) 흐름 2) Multi-Frame Message Packet : 7바이트보다 큰 데이터 : Multi-Frame Message Packet 을 통해 통신 Multi-Frame Message Packet : First Frame(시작 프레임) x 1 + Consecutive Frame x n 2-1) First Frame First Frame (1) 첫 번째 바이트(PCI : Protocol Information..

IVS 2024.01.03

CodeEngn.com Basic RCE L12

12번 문제 : key 값과 그 key 값이 MessageBox에 출력되도록 하기 위해 수정해야 할 주소 영역을 구하는 것 12.exe파일을 실행하였더니 Key를 입력하는 창이 나왔고, Check를 눌러도 변화가 없었다. About을 눌러보니 알맞은 key값을 구하라는 메시지가 나왔다. PEiD를 통해 정보를 확인해 보았더니 패킹이 되어있지는 않았다. 올리디버거로 실행해서 Key값에 ‘1’를 입력하였다. 그랬더니 EAX에 1이 저장되는 것을 볼 수 있었다. 즉, 내가 Key값으로 입력한 값이 EAX에 대입되는 것을 확인할 수 있다. 올리디버거로 12.exe을 열었다. “Congratulation ...”와 같이 성공을 나타내는 문자열이 보인다. 위쪽에 CALL 부분이 있어서 그 부분을 break걸었다. ..

CodeEngn 2024.01.03

Reversing.kr - Ransomware

file, readme.txt, run.exe파일이 주어졌다. readme.txt의 내용이다. run.exe을 실행하면 Key값을 입력하게 되어있었고, 임의의 값인 abc를 입력하였더니 위와 같은 문구가 떴다. PEiD를 통해 run.exe의 정보를 보았더니 UPX로 패킹이 되어있음을 알 수 있었다. 패킹되어있던 run.exe를 upx.exe를 통해 언패킹해주었다. run.exe를 올리디버거를 통해 분석해보았다. 이 부분은 반복문을 돌면서 암호화된 파일을 읽어오는 부분이다. 이 부분은 입력 받은 key값을 이용해서 암호화된 파일을 복호화하는 부분이다. 복호화하는 방식을 정리하면 1. 파일에서 한 바이트 씩 가져온다. 2. key값과 XOR연산을 한다. 3. 0xFF와 다시 XOR한다. key값을 구하기 ..

[CTF]Reversing.kr 2023.12.29

Reversing.kr - Easy Keygen

Easy Keygen.exe와 ReadMe.txt파일이 주어진다. ReadMe.txt를 확인해보니 Serial이 5B134977135E7D13일 때 Name을 찾으면 해결되는 것 같다. PEiD를 통해 Easy Keygen.exe파일이 패킹이 되어 있지 않음을 알 수 있다. strings를 확인하였더니 “Correct!”와 “Wrong”이 있었고, “Correct!”부분으로 이동하였다. 이 부분은 Serial을 생성하는 루틴이 담겨있다. 1. 입력 받은 문자열들을 하나씩 가져온다. 2. 0x10, 0x20, 0x30을 반복하면서 xor연산을 한다. 3. ESI에 생성한 Serial값을 저장한다. 4. 입력 받은 Serial 값과 비교해서 일치하면 “Correct!”, 실패하면 “Wrong!”이 있는 곳으..

[CTF]Reversing.kr 2023.12.29

Reversing.kr - Easy Unpack

Easy_UnpackMe.exe와 ReadMe.txt가 주어진다. Easy_UnpackMe.exe를 실행하면 위와 같이 아무것도 뜨지 않는다. PEiD를 통해서 확인해보니 Entrypoint와 EP Section에 대한 정확한 정보를 얻기 어려웠다. ReadMe.txt파일을 열었더니 OEP의 주소를 찾으면 해결이 되는 것 같다. OEP는 패킹된 파일의 실제 프로그램의 시작 부분이다. 올리디버거로 코드를 분석해보았다. PUSH, MOV, JE를 계속 반복하며 디코딩을 하는 것 같다. 코드를 계속 내리다보면 0040A1FB에서 00401150으로 JMP하고 다음 코드들이 0으로 채워져있는 것을 확인할 수 있다. 즉 이 주소가 OEP임을 알 수 있다.

[CTF]Reversing.kr 2023.12.29