목록System Hacking (14)
Sh4n3e
Reverse Shell에 대한 정보는 아래의 사이트를 통해서 볼 수 있다. http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet 그럼 오늘은 일반적으로 '사용하기만' 했던 Reverse Shell 구문의 의미에 대해서 알아보도록 하자.보통 Revese Shell은 Attacker가 Victim쪽으로 접속하기 위해서 Victim쪽에서 Attacker쪽으로 Shell을 열어주는 것을 의미한다.Attacker 쪽에서는 일반적으로 nc명령어(Netcat)을 이용하여 listening 상태로 만들어주고, Victim쪽에서 Reverse Shell을 열어줌으로써 Attacker는 Shell을 건네받아 시스템을 완전히 장악하는 용도로 사용한다...
ELF는 위에서 써놨듯이 Excutable and Linkable Format의 약자이다. 약자를 해석해보자면, 실행가능하고, 링킹가능한 포멧의 파일이란 의미이다. 해당 파일은 많이들 봤듯이, Linux의 실행파일을 file이란 명령어를 통해 많이 봐왔을 것이다. 그럼 도대체 이 파일은 어떤 파일인지, 어떤 구조를 가지고 있는지 간단히 알아보자. [skeleton@localhost skeleton]$ file golem golem: setuid setgid ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped [skeleton@localhost skeleton]$ file g..
해당 Shared Library Hooking은 그냥 크게 System Hacking이라는 범주에 속하는 것 같아 이렇게 글을 쓴다. 프로그램은 시작하기전에 Symbol들을 로드하여 사용한다. 특히 공유라이브러리는 프로그램이 필요로 할때마다 연동되는 동적인 라이브러리이다. 이것은 메모리, 용량을 절약하기때문에 자원의 활용성 측면에서는 매우 우수하지만, 사용자로부터 접근하기 쉽도록 짜여져있기 때문에, 보안상 문제가 크다. 사용자가 만든 프로그램 소스는 컴파일 되면서 라이브러리를 프로그램에 포함시키지 않고, 프로그램이 동작중에 필요한 symbol이 있을때 공유 라이브러리를 찾아가서 심볼(함수,변수) 정보를 가져온다. shared library hijacking 취약점은 라이브러리를 프로그램이 실행될 때, 공..
계속된 설치에도 불구하고, Kali2017과 VMwareFusion이 상성이 안맞는지 Copy&Paste와 File Copy가 안됐었다.이를 해결하기위해 계속된 삽질을 했고, 드디어 해결이 됐다.... (내 아까운 시간...) 우선은 최신버전의 VMwareTools가 필요한듯싶다. 그러기 위해서는 아래와 같은 작업을 수행해야한다. $ apt-get update$ apt-get upgrade$ reboot $ apt update$ apt upgrade //커널버전을 올린다. 기존 kali3-i386-pae에서 kali4-i386-pae로 올린다.$ reboot $ git clone https://github.com/rasa/vmware-tools/patches.git$ cd vmware-tools-patc..
apt는 다양한 패키지를 설치할 수 있는 유용한 툴이다. 하지만 우리는 정확한 패키지 명을 몰라 종종 고생할 때가 있다. 따라서 패키지 명을 검색할 수 있는 방법에 대해서 알아보려 한다. root@kali:~# apt-cache seacrh [Package_Name] 위의 명령어를 입력하면 우리가 원하는 정확한 패키지 명을 검색할 수 있다. 만약 우리가 커널과 관련된 패키지를 검색하고 싶다면 아래와 같은 명령어를 이용하여 검색하면 된다. root@kali:~# apt-cache search kernel 하지만 너무 많아 우리가 원하는 녀석이 어디있는지 한번 더 걸러낼 필요가 있다. 우리는 커널 헤더를 찾고싶다. 따라서 아래와 같은 명령어를 이용하면 검색이 더 용이하다. root@kali:~# apt-ca..
칼리리눅스 설정시 최초 apt-get upgrade && apt-get update를 해주게 된다. 하지만 버전에 맞는 sources.list가 존재하지 않는다면 정상적으로 동작하지 않는다. 정상적으로 동작하지 않는다는 것은 아래와 같은 에러를 출력하기 때문이다. E : Some index files failed to download. They have been ignored, or old ones used instead. 아래는 각 버전별 필요한 sources.list를 정리해놓은 것이다. 해당 사항을 참고하여 적절한 repository를 넣어줌으로써 해당 문제를 해결할 수 있다. sources.list의 위치는 /etc/apt/sources.list에 존재한다. For Kali Linux 1.x us..
Debugger 단축키 참조 : http://mer-bleu.tistory.com/7
RTL(Return to Library)? RTL은 Return to Library의 약자로 Stack의 RET영역에 라이브러리 함수를 이용하여 쉘코드의 기능을 수행하는 공격기법이다. RTL의 등장 배경은 기존 BOF공격방법인 Stack영역에서의 코드실행을 막는 보호기법으로 인하여 등장하게 되었다. Stack영역에 쉘코드를 넣고 실행할 수 없게 되니, 또다른 방법을 해커들은 연구하게 된 것이고 RTL은 그 연구의 산출물이라고 할 수 있겠다. RTL은 기존의 BOF 공격과 절차는 비슷하나, 마지막 쉘코드 대신 라이브러리를 이용한다는 점이 다르다. 아래의 그림은 Stack을 나타낸 모습이며, Fuction Area의 최상단은 $esp이며, $sfp의 위의 4byte의 주소는 $ebp가 가리키고 있다. 현재 ..
자주 사용하는 명령어 메모리 참조 : x/숫자x 0x주소, x/숫자x $레지스터 레지스터 참조 : info r, info registers 현재 위치 표시 : disp/i $pc *인텔 형식의 어셈블러로 보이게 하는 방법 : set disassembly-flavor intel ======= 참고사이트 http://visualgdb.com/gdbreference/commands/ ======= 1. 우선 컴파일 시에 디버깅 정보를 담아야 한다. gcc -g -o [프로그램명] [소스파일명] 디버깅 옵션인 -g 으로 컴파일하며, 최적화 옵션인 -O 은 주지 않도록 한다. 2. 실행방법 gdb [프로그램명] gdb [프로그램명] [core파일명] gdb [프로그램명] [실행중인프로세스pid] 3. 종료방법 q..
1. DLL 작성 #include extern "C" __declspec(dllexport)int test(){ printf("testdll print\n"); return 0;} 2. DLL 로딩 #include #pragma comment(lib, "testdll.lib")extern "C" __declspec(dllexport) int test(void);int main(){ LoadLibrary("testdll.dll"); return 0;} #include int main(){ HMODULE temp; PVOID pvoid; temp = LoadeLibrary("testdll.dll"); pvoid = GetProcAddress(temp, "test"); BOOL(__cdecl *exe)(voi..