Hacking & Security (52) 썸네일형 리스트형 웹 취약점 진단제거 가이드 1. 개요 우리나라를 비롯한 여러 국가에서는 IT 신기술을 활용해 대부분의 서비스를 인터넷을 통하여 제공하고 있으며 정보 시스템 개발 시 필요한 기능들을 미리 구현해 둔 소프트웨어 표준 ( 프레임워크 )이 민간기업으로 빠르게 확산되었으며 앞으로도 인터넷을 활용한 서비스는 더욱더 확대될 것이다. 그러나 이러한 인터넷을 활용한 서비스를 확대하는데 있어서 보안 취약점 또는 해킹 공격은 커다란 걸림돌이며 , 취약점을 잘 알며 악의적 목적을 가지고 접근하는 블랙햇 해커로부터 우리 나라를 비롯한 여러 국가의 정보 시스템이 자유로울 수 없다. 본 블로그 게시글은 KISA( 한국인터넷진흥원 ) 의 가이드를 바탕으로 참고하여 글을 작성하며 목적은 가이드를 공부하며 웹에 존재하는 보안 취약점들에 대한 안정성 및 신뢰성 확.. Return To Libc ( RTL ) RTL ( Return To Libc ) RTL : - RTL 이란 , 공유 라이브러리의 주소로 Return address 를 조작하는 기법이다. - Return Address 영역을 공유 라이브러리 함수의 주소로 조작하여 , 해당 함수를 호출하는 기법이다. - 해당 기법을 이용하여 NX bit ( DEP ) 메모리 보호기법을 우회할 수 있다. - 공격방식은 Buf + SFP + system + dummy(exit) + /bin/sh로 RET를 원하는 함수로 덮어 실행한다. NX bit ( MS : DEP ) : NX (Never eXecute bit, 실행 방지 비트 ) 란 , - 프로세스 명령어나 코드 또는 데이터 저장을 위한 메모리 영역을 따로 분리하는 CPU의 기술이다. NX bit를 적용함으로써.. Return to Shellcode Return to Shellcode - Return to Shellcode 란 , 이름 그대로 프레임의 Return address 영역을 Shellcode가 위치한 주소로 변경시켜 프로그램의 흐름을 의도적으로 조작하여 shellcode를 호출하는 방식이다. Return to Shellcode 이해하기 - Return to Shellcode를 이해하기 위해서는 Assembly Instruction 중 CALL 과 RET에 대한 이해가 요구된다. CALL Instruction : Return Address ( CALL 명령어 다음으로 실행할 명령어의 위치 ( 주소 ) ) 를 Stack에 저장후 , 피연산자의 주소로 이동 RET Instruction : POP Instruction을 통하여 ESP 레지스터가 .. Basic of pwnable Shellcode - shellcode란 , 명령 shell을 실행시켜 공격자가 해당 시스템을 제어하는 코드다. - machine code로 작성된 작은 크기의 프로그램으로 일반적으로 어셈블리어로 작성후 기계어로 변경된다. Shellcode를 개발하기 위해서는 다음과 같은 지식을 필요로 한다.- 우리가 주로 사용하는 많은 프로그램들은 대부분 C언어와 같은 High-level의 언어를 컴파일 과정에 의해 Assembly , Machine Language 등과 같은 저수준 언어로 변경된 파일이다. (C code는 해당 시스템에 맞는 Assembly Code로 변환 -> 변환된 Assembly code를 Machine code로 표현 ) - 위와 같은 방식으로 Machine code는 메모리에 로드되어 코드를.. BOF 기초문서 와우해커팀 소속 달고나님이 작성하신 Buffer OverFlow 기초문서 입니다. ( 저작권에 문제될 시 바로 삭제하도록 하겠습니다. ) PLT & GOT PLT ( procedure Linkage Table ) - 외부 프로시저를 연결해주는 테이블- PLT를 통해 다른 라이브러리에 있는 프로시저를 호출하여 사용할 수 있다. GOT ( Global Offset Table )- PLT가 참조하는 테이블- 프로시저들의 주소가 들어있다. 전반적인 PLT와 GOT의 흐름은 다음과 같이 정리된다. 함수 호출 ( PLT 호출 ) -> 함수의 실제 주소가 쓰여져있는 GOT로 점프 -> GOT 참조 -> 해당 함수로 점프 만일 , 첫 호출이라면 GOT는 함수의 주소를 가지고 있지 않고 일련의 과정을 통하여 주소를 알아낸다. 호출이 두번이상 반복되면 첫 호출때 알아낸 주소로 바로 점프한다. 이렇게 참조하는 과정에서 주소를 변조하여 우리는 프로그램의 흐름을 변경시킬수 있다... #1. Reverse Engineering 리버싱 기초 낙서장. 어셈블리어 : CPU가 이해하는 기계어와 1:1 매칭되는 low level 언어. CPU 아키텍처마다 어셈블리어가 다르다. -> 즉 , 많은 어셈블리어가 존재한다.기호로 이루어져 있어서 되게 직관적이다 상용되어지는 문법은 2개이다. ( Intel , AT&T )일반저인 형태 : 명령 operand1 , operand2(operand : 연산의 대상으로 레지스터나 숫자 등이 올 수 있다. ) ex1) AT&T) mov $0x1, %eaxex2) Intel) mov eax, 0x1 이번글에서는 Intel 문법을 이용하겠다. 레지스터 : 값을 담아놓는 공간 ( = 다기능변수 ) , CPU에 존재하며 여러가지 레지스터가 존재한다. 범용 레지스터 ( x86 기준)eax : accumulato.. Linux 환경에서의 메모리 보호기법 이번 글에서는 리눅스 환경에서 사용되는 메모리 보호기법들에 대하여 요약해보도록 하자! 기법들에 대하여 알아보기 전 , 메모리 보호 의 정의에 대하여 알아둘 필요가 있다. 메모리 보호란 ? 말 그대로 , 컴퓨터에서 사용하는 메모리의 사용을 제어하는 방법을 칭한다. 컴퓨터의 운영체제에서 실행 되어지는 프로세스가 자신에게 할당되지 않은 영역의 메모리에 접근하는 것을 막는 것이 메모리의 주된 목적이며 , 이를 통하여 프로세스 내의 버그가 다른 프로세스의 동작에 영향을 미치는 것을 예방하고 멀웨어가 시스템에서 허가되지 않은 접근권한을 갖고 시스템에 영향을 끼치는것을 막는다. 이제 실제 리눅스 환경에서 사용되어지는 메모리 보호기법들에 대하여 알아보자. 1) ASLR : Address Space Layout Rand.. 이전 1 2 3 4 5 6 7 다음