Research
0-Day, 1-Day Case Study, Fuzzing & APT 공격 방법론 등에 대한 연구 및 공부 내용을 정리하는 곳 입니다.
-
FuzzSeedSeeker서론Fuzzing은 소프트웨어의 보안 취약점을 발견하기 위한 자동화된 테스트 기법 중 하나입니다. 이 방법은 임의의 데이터(또는 “Fuzz")를 소프트웨어 입력으로 제공하여 예외, 충돌, 또는 예상치 못한 행동을 유발하는지 탐색합니다. 소프트웨어 개발 및 보안 연구 분야에서 널리 사용되는 Fuzzing은 시스템의 견고성을 향상시키고, 잠재적인 보안 위험을 사전에 식별하여 해결할 수 있는 효과적인 방법으로 인정받고 있습니다.Fuzzing 과정에서 'Seed'의 중요성은 어느정도일까요? Seed는 퍼징 과정에서 사용되는 초기 입력 값이나 데이터 셋을 의미합니다. 좋은 Seed는 Fuzzer가 더 깊이 있는 경로를 탐색하도록 하여 보다 효율적으로 취약점을 발견할 수 있게 합니다. 예를..
SeedSeekerFuzzSeedSeeker서론Fuzzing은 소프트웨어의 보안 취약점을 발견하기 위한 자동화된 테스트 기법 중 하나입니다. 이 방법은 임의의 데이터(또는 “Fuzz")를 소프트웨어 입력으로 제공하여 예외, 충돌, 또는 예상치 못한 행동을 유발하는지 탐색합니다. 소프트웨어 개발 및 보안 연구 분야에서 널리 사용되는 Fuzzing은 시스템의 견고성을 향상시키고, 잠재적인 보안 위험을 사전에 식별하여 해결할 수 있는 효과적인 방법으로 인정받고 있습니다.Fuzzing 과정에서 'Seed'의 중요성은 어느정도일까요? Seed는 퍼징 과정에서 사용되는 초기 입력 값이나 데이터 셋을 의미합니다. 좋은 Seed는 Fuzzer가 더 깊이 있는 경로를 탐색하도록 하여 보다 효율적으로 취약점을 발견할 수 있게 합니다. 예를..
2024.02.18 -
서론 COM(Component Object Model)은 마이크로소프트에서 개발한 소프트웨어 아키텍처로, 다양한 소프트웨어 컴포넌트들이 서로 통신하고 데이터를 교환할 수 있게 하는 기술입니다. 윈도우 운영 체제에서 널리 사용되며, 개발자들이 모듈식 컴포넌트를 통해 애플리케이션을 빌드할 수 있도록 지원합니다. COM은 언어 독립적인 방식으로 설계되어 있어, 다양한 프로그래밍 언어로 작성된 컴포넌트들이 서로 상호 작용할 수 있습니다. COM의 주요 개념은 객체지향 프로그래밍의 원칙에 기반을 두고 있으며, 인터페이스와 구현의 분리를 통해 소프트웨어 컴포넌트의 재사용성과 유지보수성을 높입니다. COM 객체는 정의된 인터페이스를 통해서만 접근할 수 있으며, 이 인터페이스들은 고유한 식별자인 GUID(Global ..
ComRaceConditionSeeker서론 COM(Component Object Model)은 마이크로소프트에서 개발한 소프트웨어 아키텍처로, 다양한 소프트웨어 컴포넌트들이 서로 통신하고 데이터를 교환할 수 있게 하는 기술입니다. 윈도우 운영 체제에서 널리 사용되며, 개발자들이 모듈식 컴포넌트를 통해 애플리케이션을 빌드할 수 있도록 지원합니다. COM은 언어 독립적인 방식으로 설계되어 있어, 다양한 프로그래밍 언어로 작성된 컴포넌트들이 서로 상호 작용할 수 있습니다. COM의 주요 개념은 객체지향 프로그래밍의 원칙에 기반을 두고 있으며, 인터페이스와 구현의 분리를 통해 소프트웨어 컴포넌트의 재사용성과 유지보수성을 높입니다. COM 객체는 정의된 인터페이스를 통해서만 접근할 수 있으며, 이 인터페이스들은 고유한 식별자인 GUID(Global ..
2024.02.13 -
CodeQL What is CodeQL? 데이터 흐름 분석 및 오염 분석 등을 통하여 코드 오류와 품질 등을 검사하고, 취약점을 찾기 위해 개발 된 도구 FACT database를 기반으로 QL이라는 쿼리 언어를 사용하여 database 내에서 취약한 패턴을 쿼리하여 데이터화, 분석을 진행함. 변수나 함수, 클래스 선언 뿐 아니라 변수 내에 할당 된 값도 추적이 가 다중 언어를 지원 Why We Use CodeQL? 사람이 일일히 수동으로 해야하는 취약점 분석 과정을 신속하게 자동화할 수 있는 툴로 서, 업데이트 등의 사유로 코드가 업데이트 되었을 때도 몇 분만에 코드를 분석하여 잠재적 위험 요소를 확인할 수 있음. QL Language & QL Query CodeQL의 구조와 문법은 SQL 문법과 비슷..
CodeQL SummaryCodeQL What is CodeQL? 데이터 흐름 분석 및 오염 분석 등을 통하여 코드 오류와 품질 등을 검사하고, 취약점을 찾기 위해 개발 된 도구 FACT database를 기반으로 QL이라는 쿼리 언어를 사용하여 database 내에서 취약한 패턴을 쿼리하여 데이터화, 분석을 진행함. 변수나 함수, 클래스 선언 뿐 아니라 변수 내에 할당 된 값도 추적이 가 다중 언어를 지원 Why We Use CodeQL? 사람이 일일히 수동으로 해야하는 취약점 분석 과정을 신속하게 자동화할 수 있는 툴로 서, 업데이트 등의 사유로 코드가 업데이트 되었을 때도 몇 분만에 코드를 분석하여 잠재적 위험 요소를 확인할 수 있음. QL Language & QL Query CodeQL의 구조와 문법은 SQL 문법과 비슷..
2024.02.06 -
What Is Windows Search DB? Windows Search DB는 Windows 운영 체제에 내장된 검색 기능을 지원하는 데이터베이스이다. 이 데이터베이스는 파일, 폴더, 응용 프로그램, 설정, 문서 등과 같은 사용자의 컴퓨터에 저장된 데이터를 인덱싱하여 저장한 데이터베이스이다. Windows.EDB (Windows Search DB) 파일의 구조? EDB 파일의 구조? 데이터베이스 헤더: EDB 파일의 시작에 위치하며, 데이터베이스의 기본 정보와 구성을 포함함. 테이블: EDB 파일은 여러 테이블로 구성되는데 각 테이블은 레코드의 집합으로 구성되며, 특정 유형의 데이터를 저장함. 예를 들어, 파일, 폴더, 메일 등은 각각 다른 테이블에 저장됨. 레코드: 각 테이블에는 레코드가 포함되어 ..
What Is Windows Search DB?What Is Windows Search DB? Windows Search DB는 Windows 운영 체제에 내장된 검색 기능을 지원하는 데이터베이스이다. 이 데이터베이스는 파일, 폴더, 응용 프로그램, 설정, 문서 등과 같은 사용자의 컴퓨터에 저장된 데이터를 인덱싱하여 저장한 데이터베이스이다. Windows.EDB (Windows Search DB) 파일의 구조? EDB 파일의 구조? 데이터베이스 헤더: EDB 파일의 시작에 위치하며, 데이터베이스의 기본 정보와 구성을 포함함. 테이블: EDB 파일은 여러 테이블로 구성되는데 각 테이블은 레코드의 집합으로 구성되며, 특정 유형의 데이터를 저장함. 예를 들어, 파일, 폴더, 메일 등은 각각 다른 테이블에 저장됨. 레코드: 각 테이블에는 레코드가 포함되어 ..
2023.12.26 -
논문 이해 전 알아야 할 내용 32비트 기반 코드에서 64비트 시스템에 포팅을 할 때, 왜 문제가 생기는가? 이러한 취약점의 두 가지 상호 의존적인 원인 (a) 정수 폭의 변경과 (b) 대량의 메모리를 할당할 수 있는 매우 큰 주소 공간 C 에서의 정수 타입 Signedness ? C의 Integer 종류(char, short, int, long, long long)에는 모두 Signed와 Unsigned 형식이 존재. Integer 종류 T에 대하여: $$S(T)∈{0,1} $$ S(T)가 0인 경우에는 unsigned type임을 뜻하며, S(T)가 1의 경우에는 signed Type을 뜻함. Signed의 경우에는 부호비트 존재, Unsigned 경우에는 부호비트 대신 그 자리를 숫자 표현용 비트로..
Twice the Bits, Twice the Trouble: Vulnerabilities Induced by Migrating to 64-Bit Platforms논문 이해 전 알아야 할 내용 32비트 기반 코드에서 64비트 시스템에 포팅을 할 때, 왜 문제가 생기는가? 이러한 취약점의 두 가지 상호 의존적인 원인 (a) 정수 폭의 변경과 (b) 대량의 메모리를 할당할 수 있는 매우 큰 주소 공간 C 에서의 정수 타입 Signedness ? C의 Integer 종류(char, short, int, long, long long)에는 모두 Signed와 Unsigned 형식이 존재. Integer 종류 T에 대하여: $$S(T)∈{0,1} $$ S(T)가 0인 경우에는 unsigned type임을 뜻하며, S(T)가 1의 경우에는 signed Type을 뜻함. Signed의 경우에는 부호비트 존재, Unsigned 경우에는 부호비트 대신 그 자리를 숫자 표현용 비트로..
2023.11.22