_rtld_global 리눅스 프로그램을 실행하면 프로그램에 명시된 코드의 결과값이 우리에게 출력됩니다. 프로그램이 실행되어 프로세스로 등록 시 프로그램에 명시된 코드뿐만 아닌 프로그램에서 사용되는 변수 관리를 위한 여역을 할당하는 등의 다양한 코드가 로더에 의해 실행됩니다. 프로세스가 등록되거나 종료 시 쓰이는 변수와 영역을 알 수 있다면 다양한 방식의 공격 기법 개발! 그러므로 저희 보안쪽에선 이런 구조와 구동을 이해해야합니다 같이 알아봅시다. HTML 삽입 미리보기할 수 없는 소스 __GI_exit 앞서 예제 코드를 보시면 별다른 코드를 실행X 프로그램을 종료합니다. 종료시에 우리가 모르는 많은 코드들이 내부적으로 실행되는데, 한번 살펴봅시다. 일단 main 함수 내 리턴하는 명령어에 브포를 설정 ..
send_sig 음.. 내 뭐 setvbuf 부분과 5-7까지는 1번째 인자 1이니까 write인듯 싶네요 그리고 11번째 코드가 signal을 write해서 read을 1024byte만큼 하는 걸로 보입니다. 또한 v3가 이제 buf인 듯 싶기에 v3[8]이구나.. 이를 이용해 NX가 걸려 있으므로 SROP를 합시다(Partial RELRO 우회) 여기서 전 문제처럼 gadget이 없기에.. 일단 execve의 함수나 binsh같은 문자열이 있는지 확인을 해봅시다. PIE가 안 걸려있으므로 사용이 쉽게 가능합니다. 해서 bss 영역으로 read 해서 할 필요가 없어요 편해졌네요 나이스 익스 설계 sigreturn 호출 SROP를 하기 위해 sigreturn 시스콜을 호출해야죠 그리고 앞에서 대충 sig..
SigReturn-Oriented Programming 이건.. gadget??이 있고 signal의 활용한 sigreturn이 존재하네요 Partial RELRO로 ROP 느낌 나죠 gadget(NX 우회)함수를 사용하여 read는 1024byte만큼 받기에 bof 시스콜을 호출 레지스터 조작 셸 획득으로 갈 수 있습니다. 익스 설계 sigreturn 호출 SROP를 하기 위해 sigreturn 시스콜을 호출해야죠 예젠 임의 시스콜을 호출할 수 있도록 gadget 함수를 제공합니다. 해당 함수 내부 코드 가젯 주소를 알아내고 시스콜 번호(sig_id?)와 syscall을 통해 sigreturn을 호출합니다. execve 호출 sigreturn은 스택 영역의 값을 레지스터로 복사합니다. 따라서 1024 ..
Exploit Tech: __environ 프로그램에서 리턴 명령어를 수행하면 lib와 인자에서 다양한 함수 호출! HTML 삽입 미리보기할 수 없는 소스 프로세스는 환경 변수 정보를 저장하고, 필요할 때마다 불러와 사용합니다. 이번엔 lib 함수에서 참조하는 환경 변수 포인터와 관련된 공격을 실습합시다. /etc/passwd 파일의 내용을 읽고 스택 버퍼에 저장하는군요 메인 함수에서는 stdout 라이브러리 주소를 출력하고, 반복해 임의 주소에 있는 값을 읽을 수 있는 취약점이 존재합니다. 환경 변수 모든 보호기법이 존재하기에 모든 OS가 사용하는 환경변수(environment ariable)는 매번 변할 수 있는 동적인 값들의 모임으로, 시스템의 정보를 갖고 있는 변수입니다. 이는 사용자가 직접 추가..
들어가며.. 바이너리 보호 기법 개념 자체가 없을 때에는 셸코드를 통해 다양한 시스템 콜을 호출해 임의 명령어를 실행하였습니다. 이 기법을 이용한 위헙이 계속되자 셸코드의 실행 방지를 위한 NX 등장 그러나 얼마가지 않아 셸코들르 실행하지 않고 lib 함수를 호출해 보호기법을 우회하는 RTL! 프로그램의 콛를 재활용해 임의 함수를 연속해 호출할 수 있는 ROP도 등장하였습니다. 서로 다른 프로그램에서 같은 종류의 취약점이 있다해도 공격 대상의 보호 기법 또는 실행 코드에 따라 공격하는 방법이 다르기에 이를 고려하여 계속 보호기법이 추가됩니다 이번엔 2014년 발표한 SROP를 알아보기 위해 시그널(Signal)을 알아봅시다. Signal [리눅스 / 유닉스 ] 시그널이란? 시그널(SIGNAL) 종류, 상..
Master Canary 마스터 카나리를 스택 버퍼와 확인하는 법! HTML 삽입 미리보기할 수 없는 소스 위 코드가 핵심인듯 싶으며, 보시면.. 1번 옵션으로 쓰레드를 생성/2번은 size를 입력 해당 입력 size만큼 입력을 받네요 즉, bof가 발생되겠죠? 마지막은 read 함수로 1024바이트만큼 입력 받기 Master canary를 이용할 것이기에(Partial RELRO, Canary)를 우회가 가능합니다. 또한 위에 get_shell()의 함수가 존재하므로 NX도 우회가 가능합니다. 마스터 카나리는 로더에서 할당한 TLS 영역에 존재하고, 해당 페이지는 RW-로 존재합니다. 해당 영역을 이해하기 위해서는 아래 링크에 대하여 자세히 알 필요가 있습니다. 대충 시나리오를 설계하자면.. 1번으로 ..
Master Canary 마스터 카나리를 스택 버퍼와 확인하는 법! HTML 삽입 미리보기할 수 없는 소스 마스터 카나리는 로더에서 할당한 TLS 영역에 존재하고, 해당 페이지는 RW-로 존재합니다. 해당 영역을 이해하기 위해서는 아래 링크에 대하여 자세히 알 필요가 있습니다. Background: Master Canary Stack Smashing Protector(SSP)는 BOF로부터 ret 보호 기법으로써, 스택 버퍼가 존재하는 함수 내부에서 임의로 생성된 값을 버퍼 마지막에 삽입합니다. SSP 보호 기법을 배울 때 스택 카나리의 값이 위치한 dystopia050119.tistory.com 마스터 카나리는 main 함수가 호출전에 랜덤의 카나리를 쓰레드마다 전역 변수로 사용되는 TLS에 저장 이는..
- 현대 언론에 제기되는 문제점 고찰 - 개요 2022년 MBC 전용기 탑승 불허에 시작 격인 20대 대통령의 미국 순방 중 붉어진 발언의 쟁점이었던 정부 측의 악의적으로 자막을 달아 한미 관계를 훼손시켰다는 의혹처럼 정부 측의 편파보도나 옳은 미디어의 대한 쟁점은 과거부터 꾸준히 논의되어 왔다. 즉 '언론의 자질' 이 무엇인가? 다시 한 번 본격적인 논의가 활성화된다고 볼 수 있다. 우리에게 유용한 정보를 제공하는 언론을 경계하고 비판적으로 수용하라는 지적도 많다. 디지털 리터러시의 중요성이 무엇인지 이 글을 통해 조금 더 알아보고자 한다. 목차 언론의 기능과 가치 객관성 저하 지배적인 온라인 플랫폼 폐쇄적 사고 확산 언론의 기능과 가치 포퓰리즘 논쟁 언론은 고대부터 이어져 온 중요한 사회 내 정보 공..
Stack Smashing Protector(SSP)는 BOF로부터 ret 보호 기법으로써, 스택 버퍼가 존재하는 함수 내부에서 임의로 생성된 값을 버퍼 마지막에 삽입합니다. SSP 보호 기법을 배울 때 스택 카나리의 값이 위치한 Thread Local Storage(TLS)에 대하 자세히 봅시다. Thread Local Storage 스레드의 저장 공간 ELF 바이너리를 살펴보면, 각 목적을 가진 섹션에서 데이터를 관리합니다. 코드를 실행(.text), 초기화 X 전역 변수(.data) 등이 있겠습니다. 이와 달리 TLS 영역은 스레드의 전역 변수를 저장하기 위한 공간으로, 로더(Loader)에 의해 할당됨 로더에서 TLS 여역을 할당하고 초기화하는 함수인 init_tls 함수입니다. 코드를 살펴보면,..