SECURITY/System

SECURITY/System

[시스템보안] 14주차_코드 재사용 공격

1 코드 재사용 공격 (1) 정의 - 악성 코드를 공격 대상 시스템에 삽입하기 보다는 공격 대상 시스템에 존재하는 코드를 재사용하여 악성행위를 구현 - Return-to-Libc(RTL) : libc 라이브러리에 있는 코드를 재사용해서 악성행위를 구현 - Return-Oriented Programming(ROP) : 공격 대상에 존재하는 ret으로 종료되는 명령어 gadget을 악용 2 RTL 공격 (1) 공격용 코드 주소 파악 - 라이브러리(libc) 프로그램 코드 : system(), exit() - /bin/sh 주소를 환경변수로 설정하여 주소 파악 (2) 버퍼 오버플로우 취약점 이용 - 악성 쉘코드를 주입하지 않고(NOP 제외) 주소를 주입함 - 주소들을 통해 악성행위가 성립되도록 하는 것 (3)..

SECURITY/System

[시스템보안] 13주차 버퍼오버플로우 공격(2)

1 Echo 프로그램 (1) Echo 서버 - Echo 클라이언트가 보낸 데이터를 터미널 상에 보여줌 - ./echo_server port_number - echo.h의 헤더를 동일하게 사용함 (2) Echo 클라이언트 - Echo benign: echo 서버에게 8바이트 데이터를 보냄 - Echo crash: echo 서버에게 520바이트 데이터 보냄, echo 서버의 수행을 중단시킴 - Echo spawn: echo 서버에게 520바이트 데이터 보냄, echo 서버에 쉘 생성함 # Echo 서버 ./echo_server port_number ./echo_server 15000 # Echo benign ./echo_bengin server_ip_address server_port_number gcc -..

SECURITY/System

[시스템보안] 12주차_ Shellcode(3)

1 Shellcode 연습문제 (1) 쉘 코드를 작성하여 /usr/bin/who와 동일한 출력 만들어내기 - /usr/bin/who 프로그램을 어셈블리 코드로 구현하시오. 어셈블리 프로그램의 이름은 who.s로 정하시오. * who.s 의 어셈블리 코드는 exec.shell2.s를 활용함 - 아래의 명령어를 수행함으로써, (1)에서 구한 어셈블리 코드에 대한 쉘코드를 생성하시오. - 아래의 명령어를 수행함으로써, dump_w에 있는 쉘코드를 C프로그램에서 실행 가능한 형태로 변환하시오. - who.c 프로그램을 작성한 후에, out_w에 있는 쉘코드를 who.c 프로그램 안에 복사한 후에, 아래의 명령어를 수행함으로써, 쉘코드를 실행 - gcc 후 결과 출력 (2) 쉘 코드를 작성하여 /usr/bin/w..

SECURITY/System

[시스템보안] 11주차_ Shellcode(2)

1 Shellcode (1) Helloworld2.c - 2의 보수를 이용한 접근법 - 역 방향으로 Call 명령어를 수행하여 Call 명령어에 null byte가 존재하지 않도록 함 - nasm을 이용해서 helloworld2.s을 어셈블(assemble), Hexdump로 쉘코드 생성 - call 명령어의 널바이트 제거됨 - mov 명령어의 널바이트는 여전히 제거되지 않음 BITS 32 ; Tell nasm this is 32-bit code. jmp short one ; Jump down to a call at the end. two: ; ssize_t write(int fd, const void *buf, size_t count); pop ecx ; Pop the return address (st..

yuujoeng
'SECURITY/System' 카테고리의 글 목록