IT 그리고 정보보안/Knowledge base 227

RTL(bypass NX-bit, ASCII Armor)

저번 포스팅에서 RTL을 한건 NX-bit를 우회하는 기본적인 RTL에 대해 언급했었다. 근데 여기서 아스키아머가 적용되었을 때 RTL 공격을 하는 법을 알아보자. 아스키 아머가 적용되면 SYSTEM 함수 라이브러리 주소의 최상위 1바이트가 NULL로 바뀌는데 strcpy 등으로 페이로드가 복사될 때 null 때문에 함수 호출한 후 페이로드 뒷부분이 전달이 되지 않으므로 함수의 인자값을 직접 대입하여 변조하는 것은 불가능하다. 그렇기 때문에 쓰레기값 심볼릭 링크를 하는 RTL 즉, 오메가 프로젝트를 사용한다. 근데.. 접때도 설명했듯이 argv 자리에 있는 값은 스택영역에 있다. 아스키 아머가 걸려 있으면 적어도 페도라 코어3은 될텐데. 거기엔 또 랜덤 스택이 적용되어 스택주소는 계속 해서 바뀐다. 그렇..

RET Sled

ASCII Armor로 인해 RTL 공격이 막히는건 저번에 설명했따. 그럼 해결책이 없는 것인가. RET Sled 즉, RET 썰매를 이용하면 된다. 간단하게 설명해 NOP Sled와 비슷한 맥락인데, RET을 연쇄적으로 호출하여 스택상의 위치를 계속 위로 옮기는 작업이다. 이게 아스키 아머랑 뭔 상관이 있는가. 아스키아머가 적용되어있으면 페이로드에 인자를 구성해서 올릴 수가 없다. 이 상황에서 인자값을 변조시키고 싶다면 스택상의 함수의 실행 위치를 옮기면 되지 않겠는가. 그 때 필요한 테크닉이 RET Sled 원리는 간단하다. 어셈블리 RET 명령어를 이용하는 것이다. 리턴 어드레스의 RET가 아니라 어셈 명령어 RET RET 명령은 두가지로 구성된다. pop eip jmp eip 다음 실행될 명령을 ..

Omega Project

RTL과 비슷한 방식의 공격기법이다. 솔직히 오메가 프로젝트안에 RTL이 있는건지.. 따로 분류가 되어있는 건지는 경계가 모호 하지만, 기본 컨셉은 같다. 앞서 소개한 RTL에서는 system 함수 내부에서 문자열 "/bin/sh"의 위치를 찾아서​ 페이로드르 구성하는 방식이었다. 하지만 오메가 프로젝트는 페이로드에 인자를 주지않고, 원래 인자자리에 위치한 쓰레기 값을 심볼릭 링크 시켜서 인자를 구성하는 방식을 사용한다. 직관적으로 얘기하면 RTL은 직접 넣는 것 오메가 프로젝트는 다른 곳에다 놓고 연결 시키는 것 공격을 실제로 한번 해보자. 이번에도 LOB의 gate에서 해보겠다. 버퍼는 256바이트. 빨간 네모친 부분은 시스템 함수 주소이다. 일단 우리가 적을 페이로드는 간단하다. [nop 260] ..

RTL (Return-to-Libc) Attack

이번에 이야기할 기법은 RTL(Return-to-Libc) 이다. 이름 그대로 라이브러리를 반환한다? 머 이런뜻. 우리가 사용하는 함수들은 (printf 같은) 모두 라이브러리에 들어있는 것은 알 것이다. RTL의 기본적인 개요는 "RET에 라이브러리 함수를 덮어씌워 실행되도록 하는 공격 기법"이다. 기본적으로 RTL을 사용하기 위해서는 RET보다 높은 주소에 코드를 덮어씌울 수 있어야 한다. 그렇다면 이건 왜 사용하는 것일까? 가장 큰 이유는 NX bit (Non-executable Stack) 즉, 스택 상에 코드 실행 불가능 할 때 사용한다. 우리가 가장 기초적으로 배운 BOF 공격은 스택 공간에 셸코드를 삽입하여 코드가 스택 상에서 실행되도록 하는 것인데, 이 공격을 막기 위한 방어법이 NX bi..

Shellcode 작성

저번 포스팅에서 기계어코드 작성하는 법을 익혔다. 이제 그걸 토대로 실제 해킹 공격에 쓰이는 셸코드작성을 한번 해보겠음. 기계어 코드 작성과 별반 다를게 없다. 일단 먼저 C프로그램을 작성하자. 셸이 실행되는 프로그램을 작성하면 된다. 시스템 명령어를 실행하기 위해 execve()함수를 사용하였다. system()도 있고 execl() 함수도 있는데 왜 execve()를 쓴걸까? 앞서 포스팅한 기계어 코드 작성에서 printf를 쓰지않고 write를 사용한 맥락과 일맥상통한다. execve가 시스템콜 함수이기 때문. 셸코드를 작성할때 시스템콜 함수를 써야 되는 건 저번 포스팅에서 언급했었다. (기계어 작성 포스팅을 공부한 후에 이걸 본다고 가정하겠음) 이걸 가지고 이제 셸코드를 작성해보자. 저번에는 어셈..

기계어코드 작성

BOF 공부를 할 때 가장 신경쓰이고 이해하기 어려웠던 부분이 바로 셸코드(Shell code) 이다. 보통 처음에 공격 실습을 할 때에는 미리 작성되어있는 셸코드를 주면서 nop 갯수 맞추고 셸코드를 알맞게 넣어야 함 도대체 이 알 수없는 기계어들은 무엇이고, 왜 집어넣어야 하는지? 그리고 이걸 사람이 작성한 것이 맞는지, 맞다면 어떤 방식으로 작성을 하였고 왜 굳이 기계어로만 이루어져야 하는지. BOF 처음 공부하는 초심자라면 누구나 이에 대한 의문이 생기지 않을까. 오늘은 그 의문에 대한 해답을 찾기 위해 셸코드 작성 방법에 대해 포스팅 하려고 함. 일단 셸코드는 말 그대로 셸을 따내는 코드이다. 기계어로 제작이 되어 있는데, 우린 지금 기계어 작성법도 모르는 상태이다.. 그러므로 셸코드 작성법을 ..

버퍼 오버플로우 (Buffer Overflow) 개요

진입장벽도 상당히 높은 편이고, 웬만큼 엉성하게 배우면 모르느니 못한 버퍼 오버플로우 취약점이다. 나도 솔직히 말하면 시스템 해킹 처음 배울 때, 버퍼 오버플로우가 무서워서 다른 분야부터 공부했다. 다른 부분을 하다보니.. 버퍼 오버플로우와 어우러진 기본 개념들이 전반적으로 약하다보니, 이곳 저곳에서 지식 습득에 제동이 걸리더라. 결론은 필수불가결한 그런 내용.. OS의 보호기법 발달에 따라 종류도 엄청나게 많다. 일단 버퍼 오버플로우라고 하면 " Buffer + Overflow " 두 가지 단어로 나누어 볼 수 있다. 먼저 buffer, 버퍼란 무엇일까 우리가 음식점에서 음식을 사먹으러 갔는데 사람이 너무 많다.. 근데 나는 이 음식점에서만 음식을 먹어야 한다. 그럼 우린 어떻하나? 그래 줄을 설 것이..

Metasploit - Meterpreter

exploit 타격 후 대상의 미터프리터 셸을 획득했다면 미터프리터의 여러가지 명령으로 점령 시스템에 대한 많은 정보를 얻을 수 있다. * screenshot 이 명령을 통해 점령 시스템의 현재 작업화면을 캡쳐할 수 있다. * sysinfo 점령 시스템의 정보를 획득할 수 있는 명령이다. * ps, migrate [pid] ps 명령은 현재 실행중인 프로세스 목록을 나타내는 명령이고, migrate 명령은 세션을 실행중인 프로세스 공간으로 이주시키는 명령이다. 말 그대로 미터프리터 세션을 프로세스에 올리는 것. * hashdump 점령 시스템에 있는 사용자 계정의 hash값을 덤프하여 보여주는 명령이다. - 첫번째가 LM해시값 이고 두번째가 NTLM해시값 이다. - LM해시값에서 'aad3b435'로 시..

Metasploit - Auxiliary 모듈 활용

aunxiliary 모듈 활용 예시로 Open VNC 인증과 SMB 로그인 스캔을 알아보겠음 * Open VNC Authentication 1. VNC란? VNC(Virtual Network Computing)는 가상 네트워크 컴퓨팅의 약자로, 쉽게 RDP(Remote Desktop Protoco)와 유사하다고 보면 된다. 마우스와 자판 입력을 네트워크를 통해 다른 시스템에 원격으로 그래픽을 제공해 주는 것이다. RFB(원격 프레임 버퍼)프로토콜을 사용한다. 플랫폼 독립적이라 원격지의 운영체제가 달라도 접속이 가능하다. VNC에는 VNC Viewer, VNC Server 두 가지 프로그램이 있는데, VNC Viewer는 원격지의 다른 시스템에 접속할 수 있도록 해주는 프로그램이고 VNC Server는 화..

취약점 스캐너 - 네서스(Nessus)

* 네서스(Nessus)란? 테너블 시큐리티(http://tenable.com)의 취약점 스캐너이다. 넥스포즈와 사용법은 비슷하다. 그래도 모의 해킹 업무를 수행할 때는 여러가지 툴을 사용하여 탐색해야한다. 오탐과 미탐이 생기니깐. 설치방법 또한 넥스포즈와 비슷하므로 생략한다. http://localhost:8834 로 접속한다. 네서스 시작화면이다. 현재 최신버전인데, html5로 제작되었다. wow 네서스도 넥스포즈와 마찬가지로 정책 설정부터 해준 후 스캔을 한다. 옵션과 기능이 많은 만큼 설정해야 될 부분이 많다. (효율적인 스캔 작업을 위하여) 새로운 스캔 정책을 추가하기 위해 스캔 유형, 이름, 설명 등을 설정한다. 넥스포즈와 마찬가지로, 좀더 명확한 스캔 결과를 얻기위해서 자격 증명을 기재하는..

반응형