Privilege Escalation Using LXD_LXC Group Assignment
System/System Hacking Techniques
LXD/LXC란 무엇인가?lxc리눅스 컨테이너 기술의 초기 형태로, 프로세스와 자원을 격리하여 가벼운 가상화 환경을 제공하는데 사용되며, 이를 통해 머신의 여러 인스턴스를 운영할 수 있다.현재로서는, 개발 및 테스트 환경에서 다양한 리눅스 배포판 및 특정 소프트웨어의 버전 테스트에 사용되며, 여러 서비스를 단일 호스트에서 격리하여 운영할 수 있다.lxdlxc를 기반으로 현대적인 시스템 컨테이너 매니저로서, lxc의 상위 레벨 도구이다.RSET API를 통해 컨테이너 관리 자동화 및 스크립트화 할 수 있으며, 다양한 네트워크 설정을 지원하고 이미지 서버를 통해 다양한 리눅스 배포판 이미지를 다운로드하고 사용할 수 있다.현재로서는 개발 테스트, 어플리케이션 배포, 격리된 호스팅 서비스, 클라우드 환경에서의 ..
[시스템] 바인드 쉘[Bind Shell], 리버스 쉘[Reverse Shell]
System/System Hacking Techniques
보통 쉘을 획득할떄는 두 가지 방법을 사용한다.대표적으로 바인드 쉘과, 리버스 쉘이라는것을 사용한다.1. 바인드 쉘[Bind Shell] - 바인드 쉘의 경우, 서버에서 포트가 열려있고 클라이언트에서 접속하여 쉘을 얻는 방식이다.일반적으로 가장 많이 사용되는 방식이며, 아래와 같이 사용된다.nc(netcat)을 통해 서버를 열어준다-l : listen모드로 port를 열어준다.-v : verbosity를 증가시키며, 더 많은 정보를 얻을 수 있다.-p : local port를 지정해준다.-e : 명령어가 실행된 후 추가적으로 실행시킬 명령어 즉 4444번 포트를 사용하여 서버를 열며, 서버에 접속하면 /bin/bash명령어를 실행시켜준다. 이렇게 접속하여 쉘을 획득 할 수 있다. 이것이 바인드 쉘이다...
[시스템] Frame Pointer Overflow [FPO], SFP Overflow, SFPO
System/System Hacking Techniques
시스템 해킹을 하다보면 보통 ret영역의 값을 악의적으로 변형시켜system함수를 실행시키는 등 해당 프로그램을 제어하지만, 입력버퍼의 제한으로ret영역까지 접근을 하지 못 할 수 있다. 하지만 SFP영역의 단 하위1바이트만으로 ret영역 제어와 비슷한 흐름을 이끌어 낼 수 있다. 그것이 바로 FPO기법이다.해당 기법을 이해하기 위해서는 스택 에필로그 과정과 프롤로그 과정에 대한 이해도가 필요합니다.해당 기법을 사용하기 위해서는 2가지의 조건이 충족 되어야 한다.1. 서브 함수가 존재하여야 한다.2. Buffer Overflow로 서브함수의 SFP의 최소 하위 1Byte를 덮을 수 있어야 한다.대체 어떻게 ret를 건들지 않고 원하는 주소로 이동이 가능한 것일까?이는 함수 에필로그 과정의 eip를 이용하..
[시스템] mprotect ROP
System/System Hacking Techniques
보통 ROP는 Dynamic Link 바이너리에서 plt와 got를 이용하여 해결하는 기법이다.하지만 주어진 바이너리파일이 Dynamic Link된 파일이 아닌Static Link된 파일일 경우 사용할 수 없게 된다. 필요한 모든 함수구현 코드들이실행파일 안에 존재하기 때문이다 하지만 해당 함수코드중 system()함수가 없는 경우 공격이 힘들어진다. 이렇게 system()함수가 존재하지않고 Static Link된 바이너리 파일에서의 ROP공격을 하기 위한 기법이mprotect ROP이다. 특정 메모리 영역에 ShellCode를 삽입하여 사용하는 기법이다. 일단 해당 ROP를 하기위해서는 mprotect 함수에 대해 우선적으로 알아보자. mprotect() 함수는 할당된 메모리 영역의 권한을 변경하는 함..
[시스템] Return-Oriented-Programming - ROP [x64-64bit]
System/System Hacking Techniques
기본적인 ROP사용법은 32bit ROP에서 확인하자.https://hg2lee.tistory.com/71 [시스템] Return-Oriented-Programming - ROP [x86-32bit]ROP기법이란 Return-Oreinted-Programming의 약자로 반환 지향형 프로그래밍 이다. ret영역에 가젯을 이용하여 연속적으로 함수를 호출하며 공격자가 원하는 흐름대로 프로그래밍 하듯 공격한다는 뜻의hg2lee.tistory.com 64bit ROP는 32bit ROP와 사용법이 살짝 다르다. 32bit ROP에서는 POP POP ret 등의 가젯에서,pop 명령어의 피연산자의 종류가 상관이 없었다. 하지만 64bit 환경에서는 이 피연산자의 종류가 중요하다 그 이유는 호출 규약인 Syste..
[시스템] Return-Oriented-Programming - ROP [x86-32bit]
System/System Hacking Techniques
ROP기법이란 Return-Oreinted-Programming의 약자로 반환 지향형 프로그래밍 이다.ret영역에 가젯을 이용하여 연속적으로 함수를 호출하며 공격자가 원하는흐름대로 프로그래밍 하듯 공격한다는 뜻의 기법이다. ROP는 ASLR, DEP/NX등의 메모리 보호기법을 우회하여 공격할 수 있는 기법이며,해당 기법을 사용하기위해서는 몇가지의 사전지식이 필요하다.우선 RTL, RTL-Chaining, PLT,GOT, GOT_Overwrite, Gadget등이 필요하다. 또한 해당 기법은 Stage0과 Stage1 로 나뉘어서 진행되게 된다. 첫번 째 Stage1 에서는 공격을 하기위해 필요한 요소들을 구하는 과정이고두번 째 Stage0 에서는 Stage0에서 구한 요소들을 가지고 Exploit 하는 ..
[시스템] Memory-leak 메모리 누수
System/System Hacking Techniques
우리가 주로 익스플로잇을 하기위해 "leak"한다. 라는말을 들어봤을 것이다. 우선 Memort-leak 즉 leak라 부르는 행위는메모리의 주소값을 유출시키는 행위이다. 특정한 메모리의 주소를 유출시킬 수 있으며, 인접한 영역의 메모리도 유출시킬 수 있다. 특정 주소의 실제 메모리주소를 알아내어 원하고자 하는 함수의 주소를 얻기위해 사용되며보통 실제 주소를 얻었을 경우 해당 주소의 offset을 빼서libc_base 주소를 구해 해당 libc_base 주소에 원하는 함수의 offset주소를 더해 원하고자 하는 함수의 실제 주소를 얻게 된다. 두 가지의 방법이 존재하며.1. Buffer Overflow를 이용하여, 변수들 사이의 값을 NULL값을 덮어씌워 인접 메모리를 유출시키는 방법2. Return-..
[시스템] GOT Overwrite
System/System Hacking Techniques
GOT Overwrite란 기법은 PLT, GOT의 GOT를 조작하여 사용하는 기법이다.https://hg2lee.tistory.com/61 [시스템] PLT 와 GOT [초급]시스템 해킹(포너블)을 하다보면 PLT, GOT 어디선가 들어봤고, plt, got 라고 불리우는것들을 막 호출하고 변조하고 할겁니다. 이번에는 이러한 plt와 got가 뭔지에 대해 알아보도록 하겠습니다. 보통hg2lee.tistory.com해당 기법은 PLT와 GOT는 Dynamic Link 방식에서 공유라이브러리를 사용하는 과정을 이해한다면 쉽게 이해 할 수 있을것이다. 함수가 호출되면 plt를 참조하고 plt는 got를 참조하는대 got에는 함수의 실제 주소가 들어가있다고 했다.그럼 여기서 plt가 참조하는 got영역에 공격..