전체 글 33

[하드웨어 해킹] Arm Architecture 2 (2024)

ARM 어셈블리 기본 구조 1. 명령어 {s} {condition} Rd, Rn, {Operand2} s에는 실행 결과에 따라서 CPSR flag field를 설정한다. condition: CPSR flag field에 따라서 해당 명령어를 실행 (기본적으로 ALWAYS로 실행) Rd: destination register로 명령어의 실행 결과 Rn: 첫번째 피연산자. 레지스터와 상수값을 넣을 수 있음 Operand2 : 두번째 피연산자, 레지스터, 상수 혹은 shift 값이 들어감 SUBS r4, r5, r6 // 명령어 뒤에 s를 붙여 flag field 설정 MOVEQ r0, r1 // r5와 r6이 같다면 실행 MOVNE r2, r3 // r5와 r6이 같지 않다면 실행 MOV(AL) r4, r5..

하드웨어 2024.02.15

[하드웨어 해킹] Arm Architecture 1 (2024)

ARM은 주로 임베디드에 많이 사용되기 때문에 하드웨어 해킹에는 필수이다. ARM 기반의 프로세스는 현재 스마트폰 시장에서 높은 점유율을 차지하고 있으며 Mac북에 탑재된 M1, M2처럼 높은 확장성을 가지고 있다. ARM은 16비트 32비트 64비트를 지원한다. 32비트 ARM > AArch32, arm32 64비트 ARM > AArch64, arm64 Arm이 16비트를 지원하는 방식은 mode를 나누는 것이다. Arm 프로세서에는 32비트의 Arm 모드(고성능 적)와 16비트의 Thumb(임베디드 적합) 모드가 있는데 ARM 모드의 명령어는 4바이트, Thumb 모드의 명령어는 2 바이트이다. 특이한점은 Arm 프로세서는 이 두 모드를 번갈아서 사용할 수 있다. ARM 아키텍처 Arm 레지스터는 r..

카테고리 없음 2024.02.15

임베디드의 구조

임베디드는 일반적으로 SoC/MCU, RAM, Flash memory가 결합된 보드로 구성되어 있음. SoC는 System on Chip의 약자이며, MCU는 Micro Control Unit 으로 둘 다 컴퓨터 CPU와 유사한 기능을 한다. "일반적으로 SoC와 MCU는 Reduced Instruction Set Computer(RISC) 아키텍처인 ARM과 MIPS를 사용" RISC 아키텍처는 CISC(Complex Instrunction Set Computer) 명령어 Set이 간소화 되어 있다. 임베디드 특성상 적은 명령어로 단순하게 만드는 것이 효율적이기 때문에 RISC를 선호하는 것이다. (전력 효율면에서도 매우 유리함) Flash memory는 컴퓨터에서 HDD/SSD 역할을 하는 저장장치이다.

하드웨어 2024.02.15

시스템 해킹 우분투 초기 설정 (WSL2 및 드림핵 초기 세팅)

윈도우 세팅할 때 마다 찾아보는게 귀찮아서 여기에 정리한다 개발 환경: Windows10 or 11, WSL2(Ubuntu 20.04.5 LTS WSL 설정 WSL2 설치 이 방법은 Window11 이상 or Windows 10 특정 버전 이상만 가능합니다. PowerShell 이나 cmd 창을 관리자 권한으로 실행하기 # 1. Linux용 Windows 하위 시스템 사용 설정 ON dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # Virtual Machine 기능 사용 설정 ON dism.exe /online /enable-feature /featurename:VirtualMac..

시스템 해킹 2024.01.27

CCSDS CRYPTOGRAPHIC ALGORITHMS 정리

해당 글은 CCSDS의 CCSDS Cryptographic Algorithms을 정리한 글 입니다. 23.12.07 이 보고서에거는 CCSDS 암호화 알고리즘 표준에 대한 배경 정보를 제공한다. 이 정보 보고서에서 논의된 알고리즘은 모든 민간 우주 임무와 지상 시스템에서 정보 기밀성 및/또는 인증을 위해 권장된다. 이러한 알고리즘들은 송신 우주 링크(예: 텔레커맨드), 수신 우주 링크(예: 텔레메트리, 임무 데이터) 그리고 지상 데이터 네트워크 등 모든 임무 통신 링크, 저장된 데이터의 기밀성 및 인증/무결성을 보장하기 위해 사용될 수 있습니다. 1. 서론 CCSDS는 Advanced Encryption Alogorithm 사용을 권장한다. 기밀성을 제공하기 위해 유일하게 지상 시스템(지상국)과 우주 임..

카테고리 없음 2023.12.08

C언어 문자열로 확인하는 리버싱

#include int main(void) { char* pszParam = "Hello world\n"; printf(pszParam); printf("Hello world\n"); pszParam = "nullnull != null"; printf(pszParam); return 0; } 위와 같은 코드가 있다. char* pszParam에는 "Hello world\n"라는 문자열이 저장되어 있다. char* pszParam = "Hello world\n"; printf(pszParam); --------------------------------------------- 여기서 pszParam의 값을 수정한다면 밑에 printf는 "Hello world\n"를 출력할까? printf("Hello wo..

C언어 2023.09.08

KASLR 우회

-append "kaslr" 옵션을 이용하여 LASLR 보호기법을 적용 커널의 흐름을 원하는 대로 조작할 수 있는 디바이스 드라이버 예제 test_read() 함수에서 copy_to_user 함수를 이용해서 printk() 함수의 주소를 유저 공간으로 전달 test_write() 함수에서 copy_from_user 함수를 이용해 유저로부터 주소를 전달 받아, 그 주소를 실 커널의 메모리 주소를 leak하는 코드 위와 같이 printk() 함수의 주소가 다른 것을 확인 할 수 있다. test 드라이버에서 일어나는 취약점을 이용하여 권한 상승을 하는 exploit code write 함수를 이용하여 test 드라이버에 payload 전달 payload 함수는 commit_creds 코드를 실행하여 /bin/..

리눅스 2023.09.07

[CCSDS] OVERVIEW OF SPACE COMMUNICATIONS PROTOCOLS 정리 (CCSDS 130.0-G-4)

본 글은 CCSDS 130.0-G-4 영문서를 정리한 글 입니다. (23.07.23) 해당 문서는 CCSDS(Cosultative Committee for Space Data Systems)에서 권장하는 우주 통신 프로토콜에 대한 개요를 담은 CCSDS 보고서입니다. 우주 링크는 우주선 - 지상 시스템, 우주선 - 우주선 두 개의 통신 링크를 말합니다. 우주 통신 프로토콜은 우주 링크 상에서 사용되거나 하나 이상의 우주 링크를 포함하는(지상국 - 우주선) 네트워크에서 사용되도록 설계된 통신 프로토콜입니다. 1. 소개 해당 문서의 목적은 CCSDS에서 권장하는 우주 통신 프로토콜의 구체적인 개요 제공 및 이러한 통신 프로토콜이 어떻게 우주 미션 데이터 시스템에서 사용되는 보여주는 것 입니다. (해당 문서에..

카테고리 없음 2023.07.23

[DreamHack] rop

스택의 반환 주소를 덮는 공격은 스택 카나리, NX, ASLR의 도입으로 인해 점점 어려워졌다. 공격 기법은 셸코드 실행에서 라이브러리 실행으로, 그리고 다수의 리턴 가젯을 연결해서 사용하는 Return Oriented Progamming(ROP)로 발전하였습니다. 사실 바이너리의 PLT에 system 함수를 많은 개발자가 공격 벡터로 사용할 수 있음을 알고 있으며, 여러 개발 도구들에서도 해당 함수의 사용을 지양하도록 경고하고 있습니다. 그래서 실제 바이너리에서 system 함수가 PLT에 포함될 가능성은 매우 적습니다. 현실적으로, ASLR이 걸린 환경에서 system 함수를 사용하려면 프로세스에서 libc가 매핑된 주소를 찾고, 그 주소로부터 system 함수의 오프셋을 이용하여 함수의 주소를 계산..

카테고리 없음 2023.02.28