전체 글 14

Heap exploit

익스플로잇 할때, 각 bin이 어떤 크기의 chunk를 관리하고 어떤 자료구조인지 등에 관해서 알아야한다.본 글에서는 64비트 기준 bin들에 대한 특징들을 정리한다.본 글에서는 다루지 않지만, 이외에도 arena, remainder chunk, unlinking, top chunk 등에 대해서도 알 필요가 있다. tcachebinsingle LL0x20 ~ 0x410 ( LIFO최대 7개 까지 저장fastbinsingle LL0x20 ~ 0x80 (  LIFOsmallbindouble LL0x20 ~" 0x400 ( FIFOlargebindouble LL0x400 ~ ( >=1024 )FIFO => largebin은 다른 bin들과 다르게 각 인덱스에 연결되어 있는 청크 사이즈가 같지 않다unsorte..

Security & Hacking 2025.03.08

3 types of embedded systems

본 글은 임베디드 시스템 종류에 대해 소개한다.임베디드 시스템의 타입을 아는 것은 취약점 분석 관점에서 유용하다.특히, 취약점 분석 도구는 특정 타입에 맞춰서 제안되기도 한다. general OS를 사용하는 것이 type1,custom embedded OS를 사용하는 것이 type2,OS가 없는 embedded system이 type3이다. 아래 내용은 각 논문에서 다양한 임베디드 시스템을 분류하는 방식을 인용한것이다.임베디드 시스템 취약점 관련 논문들에서 임베디드 시스템을 3가지로 분류하고 있음을 확인할 수 있다. Type-1 systems use general purpose OSs retrofitted for embedded systems; Type-2 systems use custom embedde..

Security & Hacking 2025.03.03

Android Security - exported 편

안드로이드에서 app component는 actiivties, servcies, broadcaset receivers, content providers가 있다.이 4가지 모두 entry point가 될 수 있다.  Activities [1] 역할: 사용자가 직접 interaction하는 UI를 제공[2] 보안: exported=true이면, 다른 앱에서 클래스 이름으로 activity를 시작 가능원래 바로 접근이 되어서는 안되는 activity가 켜질 수 있음 ex) am start -n com.android.banking/.ActivityName [3] 기본값: 기본적으로 exported=false[4] 관련 xml tag:  Services[1] 역할: 장기간 백그라운드 작업에 많이 사용[2] 보안:..

Security & Hacking 2025.02.16

command injection

command injection은 공격자의 controllable input이 쉘 실행 함수의 인자에 도달할때 발생한다.이러한 함수의 예로 system, execve, popen가 있는데, 명령어 삽입과 출력 관점에서 차이점에 대해서 정리한다. system()#include int main() { system("ls -l /home/"); return 0;} $ strace -f --trace=execve ./system_testexecve("./system_test", ["./system_test"], 0x7ffda5ff59e0 /* 27 vars */) = 0strace: Process 790 attached[pid 790] execve("/bin/sh", ["sh", "-c", "ls..

Security & Hacking 2025.02.11

CodeQL

본 글은 CodeQL의 입문자들에게 도움이 되고자 정리한 글입니다. [1] Database1.1) 다양한 분석 지원codeql에서는 data flow anlaysis, control flow analysis, taint anlaysis, range anlaysis를 수행할 수 있다. 와...database에는 abastrct syntax tree, data flow graph, control flow graph를 포함하고 있다. 언어별로 다른 scheme을 지원하니 걱정하지말고 사용하자 1.2) 라이브러리 지원Declaration, Statement , Expression, Type, Preprocessor class들을 지원 기본적으로, library(.qll)들은 stmt, expr 두 클래스들을 b..

Security & Hacking 2025.02.11

00_angr_find

대상 프로그램 분석password를 입력 받아서 complex_function()이랗는 함수를 통해 반환된 문자열을 "ILIUFVJF"와 비교하여 일치할 경우, "Good Job"을 출력한다. 따라서 "Good Job"을 출력하는 입력값을 찾는 것이 목표이다. 솔루션import angrimport sysdef main(argv): # Create an Angr project. # If you want to be able to point to the binary from the command line, you can # use argv[1] as the parameter. Then, you can run the script from the command # line as follows: # pyt..

Security & Hacking 2025.02.10

angr 핵심 개념

[1]  Projectangr로 분석할때 사용하는 object는 대부분 project object에 의존하기 때문에 만들어줘야한다. [2] Loadingbinary file을 va space 표현으로 바꿔야하는데 그걸 하는 녀석이 CLE이고, 로더이다. 해당 cle 객체(proj.laoder)로 va space에 대한 질의를 수행할 수 있다.[3]  The factoryangr에 많은 클래스가 존재하는데, 대부분의 클래스가 project가 초기화되어야한다. 그래서, 그냥 proejct.factory를 제공하고 그걸로 클래스 객체를 생성하든 하면된다.3.1) Blocksproject.factory.bloc()으로 basic block을 얻을 수 있다.  그리고, agnr는 basic block단위로 분석을..

Security & Hacking 2025.02.10

SSL Stripping

SSL StrippingSSL Stripping 이란 HTTPS 를 HTTP 로 downgrade시키는 공격 기법이다.장점은 브라우저에서 인증서 에러를 표시하지 않아 피해자는 실제 공격이 진행되고 있는지 모른다.SSL Stripping을 수행하면 평문 통신을 볼 수 있어서 개인정보들을 탈취할 수 있다.  동작 원리동작 원리는 mitm(e.g,. proxy, arp poisoning) 이 선행되어야한다. (1) mitm된 상황에서,(2) 공격자는 중간에서 https redirect 응답을 차단하고,(3) http로 downgrade 시켜서 클라이언트에게 응답을 준다. 이렇게 되면, 브라우저는 그냥 실제 원하는 서버와 잘 통신하고 있다고 생각한다.비록 실제 구조는 아래와 같지만 말이다. victim --(h..

Security & Hacking 2025.02.10

OOP 다형성

OOP 에서 상속, 다형성, 캡슐화 이 3가지가 키포인트다. 글쓴이는 C++보다 Java를 먼저 배웠는데,C++를 학습하면서, Java, Python 다형성 구현 측면에서 차이점이 있어서 정리한다. 본 글은 클래스의 업캐스팅에 대해서 알고 있다고 가정한다. Java보통 Java에서는 base 클래스를 상속 받아서 여러 클래스들을 구현한다.이때, derived 클래스에서 @override annotation을 사용하여 base 클래스의 method를 오버라이드한다.그리고 업캐스팅을 하고 base 클래스 인스턴스의 method를 호출하면, 자동으로 derived 클래스의 method를 호출한다.이러한 방식으로 Java에서는 다형성을 제공한다. class Base { void show() { ..

Development 2025.02.08