본문 바로가기

0x20 Security/0x21 System

Format String Bug (FSB) Format String Bug (FSB)오랜만에 글을 작성하네요.이번에 정리할 기법은 FSB입니다. Format String Bug (FSB)가 일어날 일은 최근에 없지만 뭐,,프로그래머의 실수로 인해 생길 수도 있으니 알아두면 나쁘지 않을 것 같습니다.먼저 이 글을 읽기 전에 프로그래밍을 해본 적이 있고 Format String에 대해 알고 있으면 편하게 읽으실 수 있습니다. Format String은 C프로그래밍을 해보셨다면 printf() 함수를 이용하며 포맷에 맞게 출력을 할 때 보실 수 있었을 겁니다. printf("I'm %s\n, name); 위의 코드는 간단한 name을 출력하는 코드입니다. Format String Attack은 역시 프로그래머의 게으른 작은 실수로 인해 발생하는 취약점.. 더보기
Save Frame Pointer Overwrite (SFO) Save Frame Pointer Overwrite (SFO)이번에 작성할 기법은 SFO 입니다.Buffer Overflow(BOF) 가 일어나는 프로그램 취약점을 이용하여 Save Frame Pointer를 주작질을 하여 원하는 주소로 이동시키게 하는 기법입니다.이 글을 일으시려면 BOF에 대해 알아두셔야 됩니다. Save Frame Pointer Overwrite (SFO)는 1byte만 Overflow되는 상황에서 사용되는 기법으로, save frame pointer(sfp) 1byte를 해커가 주작질함으로서 상위 실행 권한을 얻을 수 있지만,main 함수에서는 save frame pointer(sfp)를 주작질을 하여도 리턴 주소가 주작되지 않습니다. Buffer Overflow(BOF) 글에서 .. 더보기
Buffer Overflow (BOF) Buffer Overflow먼저 시작하기에 앞서 미리 알려드립니다!내용이 요리조리로 통통 튀어다니면서 이상하고 틀린 부분도 있을 수 있습니다. 이번엔 시스템 해킹에서의 기본 중의 기본인 BOF를 정리하는걸로...먼저 BOF는 말 그대로 Buffer (버퍼가) Overflow (넘치다)버퍼가 넘친다는 말입니다.프로그래머의 실수로 인해 버퍼가 할당받은 공간에 크기 제한을 하지 않고 값들을 집어넣어 할당받은 공간보다 더 값을 넣을 수 있는 취약점입니다. 쉽게 말해서 buf[10]이라는 배열을 만들었다면,이 배열은 총 10개의 공간을 가지게 됩니다.하지만 buf에 10개의 값을 넣는게 아닌 11개, 12개 혹은 그 이상의 값들을 크기를 확인하지 않고 마구잡이로 넣어서 BOF 취약점이 터지게 되는 것이죠 :D 먼.. 더보기
About LD_PRELOAD LD_PRELOAD에 대해 ARABOZALOB 문제를 풀다 처음 알게 되어서 정리를 해봤습니다. 아, 환경마다 PRELOAD 환경 변수 이름이 다르더라구요.뭐 사실상 AIX 빼고는 다 이름이 같습니다. what is LD_PRELOAD ?프로세스를 실행하는 중에 라이브러리를 로딩할 때,이 LD_PRELOAD 환경변수가 설정되있으면 해당 변수에 지정된 라이브러리를 먼저 로딩을 하고, 이 중에 libc 함수명과 동일한 함수가 있다면 해당 함수를 먼저 호출을 해주게 됩니다. where is LD_PRELOAD ? LD_PRELOAD의 메모리 영역은 공유 라이브러리 영역에 존재해서 stack 영역보다 낮은 주소에 존재합니다. Let's compile shared library!.so로 컴파일 하기 위해서는 아래.. 더보기
Use After Free (UAF) Use After Free오늘 다뤄볼 취약점은 Use After Free입니다.말 그대로 사용한 후 메모리를 해제했을 때에 취약점을 발견할 수도 없을 수도 있을 수도 있습니다.이 취약점은 근래에 브라우저 취약점에서 많이 발견되었습니다. [CVE-2012-4792 IE Use-After-Free Analysis and Exploit]- http://pgnsc.tistory.com/348 멋쟁이 sweetchip님의 BoB 프로젝트 도중에 그 당시에 문서로 남겨놓으셨습니다! 이러한 UAF 취약점은 스택 영역에서 이루어지는 취약점이 아닌 힙 영역에서 발생하는 취약점입니다.What is Heap?네, 그렇다면 heap은 무엇일까요 잘 빠지고 이쁜 엉덩이를 말하는 걸까요?아쉽게도 이런 이쁜 엉덩이를 원하셨다면, .. 더보기
How main() is executed on linux main()는 리눅스에서 어떻게 실행이 될까? 시작하기에 앞서 리눅스에서의 실행파일이 무엇인지 알아본 뒤에 main 실행이 어떻게 되는지 깊숙히 파고들 예정입니다.먼저 리눅스에서의 실행파일이 무엇인지 알아본 뒤에 실행 포맷 구조를 알아 본 뒤에 main에 대해 들어갈 예정입니다.아마 내용이 축구공처럼 통통 튀기고 이리저리 갈 것 같으니 언제든지 이상한 부분은 댓글로 지적해주시면 감사하겠습니다. What is ELF? 그래서 ELF는 무엇일까요? 게임 또는 애니메이션이나 소설에 나오는 엘프를 말하는 걸까요?네, 하지만 여러분들이 생각하는 그런 엘프는 아니라 유감, 그렇다면 ELF에 대해 알아봅시다!1999년 86open 프로젝트에 x86기반 유닉스 계열 시스템들의 표준 바이너리 파일 형식입니다.ELF (E.. 더보기
System Hacking :: Memory Protection Memory Protection Techniqueswriten by hubeen Linux 환경에서의 메모리 보호 기법에 대해 작성하려고 합니다./*이 글은 틀린 정보가 있을 수도 있으며 글의 맥락이 축구공처럼 뻥뻥 돌아다닐 수도 있습니다.*/ 일단 메모리 보호라는 개념을 알아보도록 하겠습니다. 네, 그렇습니다.운영체제에서 실행되고 있는 프로세스에게 메모리를 할당을 해주게 되는데.할당되지 않은 영역의 메모리에 접근을 하는 것을 막기 위해 있는 것이 메모리 보호 기법의 주된 목적입니다. 이러한 메모리 보호 기법들은 짱짱한 분들이 해커들의 공격을 막기 위해 열심히 노력을 해서 완성이 된 녀석들입니다. 1. ASLR (Address Space Layout Randomization) 이 ASLR은 2001년 즈.. 더보기
[SSA] 시스템 해킹 스터디 6주차 이번 주에는 취약점 검사 방법의 변천사와 현재 트렌드, 핀툴에 대하여 깊게 파고드는 시간을 가졌다. 사실 취약점 검사 방법의 변천사, 현재 트렌드 들은 후반 부 밖에 듣지 못하였다... 시간 계산을 잘못해서 너무 늦게 나와서 20분~30분을 늦어버렸다... 취약점 찾는 기법의 변천사 소스코드 오디팅[Vulnerable functions]-> strcpy , memcpy , gets , fges , printf api usage 탐색-> cat program.c | grep strcpy 후킹-> Vulnerable functions에 유저 인풋이 들어가는지 체크 퍼징-> valid한 유저인풋을 bit flipping이나 구조를 약갘씩 변경해 주면서 다양한 code path를 탐색하면서 특정 값이 취약한 루.. 더보기
[SSA] 시스템 해킹 스터디 5주차 이 5주 차에서는 4주 차 과제를 제일 먼저 풀은 2명이 풀이를 발표하게 되었었다.그러나 1분은 늦잠을 자셔서 못오셨다고..그렇게 pork 풀이와 한 문제의 풀이를 듣고 5주 차 풀이 발표자 분이 과제를 내게 되었다. 이번 과제는 layer7 ctf 2015에서 나온 문제를 풀기 였다. 문제는 이거다. 무려 이 대회에서 4명밖에 못 풀은 문제다. 사실 이 문제는 건드린 시각은 과제 내용을 들은 일요일이였는데.월~수가 수학여행이라 과제를 건드릴 시간이 없어서 오늘 적는다...ㅎ; 사실 월~수 중에 숙소에서 과제를 하려고 했는데...심하게 피곤해서 숙소 도착하면 정신도 못차린 채 쓰러졌다고 ... 한다. ㅇㅇ 시작하죠 일단 아이다로 까봅시다. 일단 이 문제에 맞는 환경을 만들어주기 위해서 /home/qlvl.. 더보기
[SSA] 시스템 해킹 스터디 4주차 ROP 심화 부분이라고 한다. ROP 문제들을 풀면 된다. 풀어야한다... 더보기
[SSA] 시스템 해킹 스터디 3주차 이번 3주차에서는 ROP를 다뤘다. ROP(Return Oriented Programming) : BOf + 여러가지 ①미티게이션 우회할 수 있는 테크닉 ① 미티게이션 : 취약점을 막는 것이 아니라 취약점을 통한 익스플로잇을 막는 것.ex) strcpy(buf, argv[1]) 이러한 미티게이션은 4~5개 정도 있으며 가장 대중 적으로 사용되는 것은 3개가 있습니다. ASLRNXSSP ASLR(Address Space Layout Randomization): 일반적인 bof의 흐름에서는 스택에 쉘코드를 적재해두고 거기로 리턴하는데 스택의 주소를 프로그램 실행 시마다 다르게 합니다. ASLR 확인 방법 : /proc/sys/kernel/randomize_va_space 값을 확인. 0 1 2 걸려있지 않음.. 더보기
[SSA] 시스템 해킹 스터디 1주차 이 스터디에서는 가르쳐주신 걸 모든 내용을 문서화하면 이쁨을 받는다고 해서 작성했3그리고 나중에 내가 쓴 걸 다시 돌아보면서 많은 생각을 하게 만들 것이다. 1주 차에서는 어셈블리어 공부, 어셈블리어 프로그래밍, 핸드레이를 진행하였다. 어셈블리어에는 어마어마한 레지스터들이 있다는 것을 알게 되었다.하지만 우리가 쓰는 레지스터들은 보통 8개 정도 쓰인다고 한다. 범용 레지스터 (General Resgister) EAX (AX, AH, AL) - 누적 연산기, 곱셈과 나눗셈 연산에서 자동으로 사용한다.EBX (BX, BH, BL) - 베이스 레지스터, 특정 주소를 지정한다.ECX (CX, CH, CL) - 카운터 레지스터, 반복 카운터로 사용됨.EDX (DX, DH, DL) - 데이터 레지스터, 입 출력 연.. 더보기