1. musl이란?리눅스 커널 기반의 운영체제용으로 고안된 표준 라이브러리이다.표준을 준수하는 libc 구현체를 개발하는 것을 목적으로 개발했다. (특징)- 가볍고 빠르며 간단하고 무료이다.- 표준 준수하고 안정성 측면에서 정확성을 추구 2. musl-gcc 설치ex)// test.c#include int main(){ printf("Hello World\n"); return 0;} 컴파일할 코드는 c언어를 접했다면 한번쯤은 봤을 hello코드이다.musl.cc 바이너리들이 모여있는 아래 링크에서 원하는 아키텍처에 따라 다운 받으면 된다.(http://musl.cc/#binaries)- x86_64 : "x86_64-linux-musl-native.tgz"- arm : "aarch64-linux-mus..
1. Shellcoding란?1-1. 개요 (Shellcode란?)익스플로잇을 위해 제작된 어셈블리 코드 조각이다.어셈블리어와 기계어 코드는 일대일 대응이기 때문에 공격자가 rip를 주입한 shellcode로 옮긴다면 cpu에게 원하는 명령을 하도록 유도할 수 있게 된다. [shellcode작성법을 알아야하는 이유]수행할 대상의 아키텍처와 운영체제 그리고 수행 목적에 따라 어셈블리어는 다르게 작성되어야 한다. 아키텍처별로 자주 사용하는 쉘코드를 공유하는 사이트가 있지만 해당 쉘코드들은 범용적으로 작성되었기 때문에 제대로 작동이 안 될 가능성이 있다. 따라서 타겟 시스템에 맞는 최적의 쉘코드를 상황에 따라서 언제든지 작성할 수 있어야한다. => 쉘코드 모음 사이트 : http://shell-storm.or..
[목차]1. Sandbox란?2. SECCOMP란 2-1. SECCOMP 모드 2-1-1. STRICT_MODE 2-1-2. FILTER_MODE 2-2. 코드 적용 방법 2-2-1. seccomp 라이브러리 사용 2-2-2. BPF문법을 사용3. seccomp-tools 1. Sandbox란외부의 공격으로부터 시스템을 보호하기 위해 설계된 기법애플리케이션이 꼭 필요한 시스템 콜만 실행하게 하거나, 파일의 접근만을 허용하게 하여 공격을 어렵게 하기 위한 보안 메커니즘 중 하나 (2가지 방법)Allow List : 전체를 차단한 후 원하는 시스템 콜만 허용Deny List : 전체를 허용한 후 차단할 시스템 ..
1. One-gadget이란? 라이브러리 내에 execve함수 인자값으로 "/bin/sh"가 존재하여 해당 주소로 실행하는 것만으로 쉘 실행이 가능한 가젯. [왜 one-gadget을 쓰는 것인가?] => 기존에 쉘을 실행하는 방법(RTL, ROP기법) 1. "/bin/sh"문자열이 없다면 입력하고서 이용 2. 함수호출규약에 따라 레지스터에 값을 세팅 3. execve, system함수를 호출 기존에는 위 과정을 거쳐서 쉘을 실행했지만 이 one-gadget을 이용하면 해당 주소 호출만으로 쉘을 실행시킬 수 있기 때문에 간편하다.2. one-gadget을 찾는 방법 2-1. 리눅스 명령어와 도구를 이용하여 탐색 (1) "/bin/sh" 문자열 찾기 strings -tx “libc.so.6주소” | gre..