**CFI (Control Flow Integrity)**는 프로그램의 제어 흐름이 악의적으로 변경되지 않도록 보호하는 보안 기법입니다. 주로 Return-Oriented Programming (ROP), **Jump-Oriented Programming (JOP)**와 같은 공격으로부터 시스템을 방어하는 데 사용됩니다. CFI는 실행 중인 프로그램의 제어 흐름이 예상된 정상적인 흐름을 따르고 있는지 확인하여, 공격자가 제어 흐름을 변경하는 시도를 탐지하고 차단합니다.CFI의 주요 개념:제어 흐름 그래프 (CFG, Control Flow Graph): CFI는 프로그램의 소스 코드에서 미리 제어 흐름 그래프(CFG)를 생성합니다. CFG는 프로그램의 모든 가능한 제어 흐름을 나타낸 그래프입니다. CFI는..
ROV(Return-Oriented Vulnerability)은 **Return-Oriented Programming (ROP)**과 밀접한 관계가 있습니다. **ROP(리턴 지향 프로그래밍)**는 메모리의 기존 코드 조각을 악용하여 임의의 동작을 수행하게 만드는 익스플로잇 기술로, 특히 DEP(Data Execution Prevention) 같은 방어 기법을 우회하는 데 사용됩니다.ROP(Return-Oriented Programming) 개념:기존 코드 조각 재사용: ROP는 공격자가 시스템 메모리에 있는 기존 코드 조각들을 재사용하여 악성 동작을 수행합니다. 이때 코드 조각은 작은 부분, 즉 **가젯(gadget)**이라고 부르는 기계어 명령의 모음입니다. 각 가젯은 RET(return) 명령으로 ..
ASLR(Address Space Layout Randomization)은 시스템 보안을 강화하기 위한 기법 중 하나로, 프로세스가 메모리에 로드되는 주소를 무작위로 배치하여 공격자가 특정 메모리 주소를 예측하기 어렵게 만드는 기술입니다. 주로 메모리 기반 공격, 특히 버퍼 오버플로우 공격으로부터 시스템을 보호하는 데 사용됩니다.ASLR의 주요 개념:메모리 주소 무작위화: ASLR은 실행 중인 프로세스가 사용하는 메모리 공간(예: 실행 파일, 라이브러리, 스택, 힙 등)의 위치를 매번 무작위로 배치합니다. 이를 통해 공격자가 미리 특정 메모리 주소를 파악하고 악성 코드를 주입하는 것을 방지할 수 있습니다.재배치되는 요소:프로그램 코드: 실행 파일의 코드가 메모리 내에서 예측 불가능한 위치에 로드됩니다.동..
Windows DEP(Data Execution Prevention)는 시스템 메모리의 특정 영역에서 코드가 실행되지 않도록 방지하는 보안 기능입니다. DEP는 주로 메모리에서 발생할 수 있는 악성 코드의 실행을 차단하여 시스템의 보안성을 강화하는 역할을 합니다.DEP의 주요 개념:실행 방지 메모리 영역: DEP는 시스템 메모리의 일부를 "실행 불가"로 표시합니다. 즉, 그 메모리 영역에서는 데이터만 저장할 수 있으며, 코드를 실행할 수 없습니다. 이러한 메모리 보호는 주로 버퍼 오버플로우 공격과 같은 악성 코드 실행을 방지합니다.하드웨어 기반 DEP: 하드웨어 기반 DEP는 CPU의 기능을 사용하여 메모리 영역을 보호합니다. 하드웨어에서 제공하는 NX(Non-Executable) 비트 또는 XD(eXe..
임계영역 설정 방법 및 C++ 예제 1. 임계영역(Critical Section)이란? 임계영역(Critical Section)은 멀티스레드 프로그램에서 공유 자원에 대한 접근을 제어하기 위해 사용되는 코드 블록입니다. 여러 스레드가 동시에 임계영역에 접근하게 되면 데이터가 손상되거나 일관성이 깨질 수 있기 때문에, 한 번에 하나의 스레드만 임계영역에 접근할 수 있도록 동기화 메커니즘을 적용합니다. 2. 임계영역 보호 기법의 종류 뮤텍스(Mutex): 상호 배제를 통해 한 번에 하나의 스레드만 자원에 접근할 수 있게 합니다. 스핀락(Spinlock): 스레드가 잠금을 얻기 위해 계속 루프를 돌며 대기하는 방식입니다. 세마포어(Semaphore)..
문서 끝문자 형식 문제 해결: "LF" vs "CRLF"리눅스 및 유닉스 환경과의 호환성을 위해 소스 코드는 LF(Line Feed) 형식을 사용하여 관리해야 합니다.Git 설정 추가모든 파일의 끝문자 형식을 일관되게 관리하기 위해 다음과 같은 Git 설정을 추가합니다.git config --global core.autocrlf true이 설정의 동작 방식은 다음과 같습니다:체크아웃(Checkout):리포지토리에서 파일을 체크아웃할 때, 줄 끝 문자가 LF인 파일을 CRLF로 변환합니다. 이는 Windows 환경에서 작업할 때 편리합니다.커밋(Commit):파일을 커밋할 때, CRLF 줄 끝 문자가 포함된 파일을 LF로 변환하여 리포지토리에 저장합니다. 이는 리눅스 및 유닉스 환경과의 호환성을 보장합니다..
- Total
- Today
- Yesterday
- 블루버블
- Effective c++
- C#
- 네트워크 정보
- DLL
- 스쿠버 다이빙
- C# 고급 기술
- Build
- C
- effective
- 제주도
- 서귀포
- 현포다이브
- C++
- Windows
- PowerShell
- 스쿠버다이빙
- script
- 울릉도
- Linux
- 성산블루버블
- 외돌개
- 서귀포블루버블
- CMake
- 블루버블다이빙팀
- 암호화
- 패턴
- C#.NET
- 블루버블다이브팀
- OpenSource
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |