728x90
반응형

전체 글 220

1단계 gate -> gremlin

처음 어떤 파일이 있나 확인해보면, gremlin의 권한을 가지고 있는 실행 파일과 소스코드가 존재한다. gremlin.c 파일을 cat 명령어로 확인을 해보면 소스코드가 존재한다. 소스 코드를 분석해면 취약한 함수 strcpy()가 존재하는 것을 알 수 있다. 그렇다면 exploit이 가능하다. exploit 준비를 해보자. 첫 번째로 gdb 툴을 이용해 실제 스택 영역에 소스코드에 나온 데로 256byte를 사용하는지 확인해보자. 이렇게 어셈블리어를 확인해보면 실제 소스코드에 나와있는데로 256byte를 사용한다. 메모리 구조를 확인하면 RET [4] SFP [4] buffer [256] 이렇게 되어있다. 저기를 exploit 하기위해 총 260byte에 0x90과 쉘 코드를 넣고 ret에는 0x90..

SQL Injection (UNION)

UNION 연산자를 이용하여, UNION 연산자가 포함된 공격 쿼리를 주입하여 DB의 데이터를 획득한다. UNION은 둘 이상의 SELECT 문에서 검색된 레코드를 단일 집합으로 결합해주는 연산자다. UNION과 UNION ALL 이 존재한다. UNION은 중복을 제거한 결과의 합을 나타내고, UNION ALL은 중복을 포함한 결과의 합을 나타낸다. UNION 예제 select 'test' unison select 'good'; 결과 test ----- test good UNION 문법 SELECT... UNION [ALL | DISTINCT] SELECT... [UNION [ALL | DISTINCT] SELECT...] UNION 연산자는 두 개의 SELECT문 사이에 위치하며 데이터 형만 호환된다면..

Ethernet 헤더

Ethernet 헤더는 제일 낮은 계층의 프로토콜. 0 1 2 3 Destination Address Destination Address Source Address Source Address Ethernet Type X Ethernet 헤더는 도착지 MAC 주소가 6바이트, 출발지 MAC 주소가 6바이트 그리고 어떤 프로토콜의 데이터를 운반하는지 Ethernet Type 2바이트 필드로, 총 14바이트로 구성된다. Ethernet Type은 리눅스 환경에서 /usr/include/net/ethernet.h 파일에 정의되어있다.

SQL Injection

SQL Injection 웹 페이지의 입력 또는 매개변수인 파라미터의 값에 SQL 쿼리를 주입하여 데이터베이스의 데이터 조작이 가능한 웹 해킹 기법 중 하나이다. 이 취약점은 데이터베이스와 웹 애플리케이션이 연동되면서 태생되었으며 허용된 권한, 기능, 실행 가능한 SQL 쿼리에 의해서 피해 정도가 가늠되는 취약점이다. SQL Query 이 취약점은 DB의 데이터를 질의하기 위한 SQL 쿼리가 핵심 공격 기술에 해당되고, SQL 쿼리 구문 구현 능력이 공격 능력을 좌우한다고 할 수 있다. SQL은 데이터베이스로부터 정보를 얻거나 갱신하기 위한 표준 대화식 프로그래밍 언어이다. 데이터 조작어(DML) : 스키마 객체 내에서 데이터를 관리한다. ex) select, insert, update, delete 등..

체크섬(Checksum)

체크섬은 전송되는 헤더 및 데이터의 무결성을 보장하기 위해서 사용되며, 기본적으로 데이터의 합으로 계산된다. 통신 프로토콜에서 헤더 및 운반 중인 데이터에 오류가 발생하지 않았는지 확인하는 일반적인 방법은 바로 체크섬을 이용한다. 1. 데이터를 전송할 때 송신 측에서는 체크섬 값을 계산하고 이 값을 데이터와 함께 전송한다. 2. 데이터를 받는 수신 측에서는 송신 측에서 체크섬을 계산할 때와 동일한 알고리즘으로 체크섬을 계산한다. 3. 만약 데이터를 수신하는 쪽에서 계산된 체크섬 값과 수신된 체크섬 값이 서로 다른 값이 나오면 에러가 발생한 사실을 확인할 수 있다. 수신 측에서 데이터를 수신할 때 체크섬 계산 결과가 일치하지 않는다면 해당 패킷은 폐기되기 때문에 패킷을 전송할 때 정확한 체크섬 계산은 패킷..

Packet Capture 라이브러리2

다음은 이어서 전 소스코드 사용했던 pcap_findalldevs() 함수, pcap_freealldevs() 함수를 살펴볼 것이다. pcap_findalldevs() 함수 #include int pcap_findalldevs(pcap_if_t **, char *); 이 함수는 사용자 PC에 있는 모든 네트워크 디바이스 정보를 가져오는 함수이다. 매개변수로는 pcap_if_t 타입의 포인터 변수가 저장된 변수의 주소 값과 에러 메시지가 저장될 버퍼의 주소 값을 전달한다. 전에 사용했던 소스코드를 보면 이 함수를 호출한 뒤, alldevs 변수에 연결 리스트로 검색된 네트워크 카드 정보가 저장된다. pcap_if_t의 구조체는 pcap.h 파일에 정의되어 있다. struct pcap_if { struct ..

Packet Capture 라이브러리

RAW 소켓을 사용하지 않고, 라이브러리를 이용하여 패킷을 캡처하거나 프로토콜 헤더를 직접 작성하여 전송할 수 있다. 유닉스 계열에서 네트워크 패킷 캡처를 위해 가장 많이 libpcap 라이브러리를 사용한다. libpcap은 데이터 링크 계층부터 프로토콜 스택을 통과하는 네트워크 패킷을 캡처할 수 있도록, 네트워크 패킷을 전송할 수 있게 해 준다. 리눅스에서 libpcap 이용하여 네트워크 디바이스 정보를 확인해보자. 첫 번째로 libpcap 라이브러리가 필요하므로 다운로드를 하여보자. #apt-get install libpcap-dev 컴파일할 때는 gcc -o libpcap_test libpcap_test.c -lpcap 이렇게 해줘야 pcap.h 파일을 인식해 컴파일이 된다. 이렇게 실행하면 네트워..

RAW 소켓

RAW 소켓이란 소켓을 생성할 때 지정하는 옵션을 이용하여 데이터를 전송할 때 직접 프로토콜 헤더를 만들고, 데이터를 수신할 때도 프로토콜 헤더를 포함하여 수신하겠다는 의미로 소켓을 생성하는 것이다. 보통 소켓 관련 라이브러리 및 운영체제에서 프로토콜 헤더를 작성하여 직접 작성하지 않아도 되지만, 간혹 직접 다뤄야 하는 경우가 필요하다. 참고로 대부분의 Socket API는 RAW 소켓을 지원한다. 윈도우 XP 경우도 2001년에 출시되었을 때 Winsock 인터페이스를 통해서 RAW 소켓을 지원했다. 하지만, 해커가 RAW 소켓을 이용하여 직접 프로토콜 헤더를 만들어 공격에 사용하였기 때문에 3년 후의 윈도우 XP에서는 RAW 소켓의 사용을 제한하였다. 그래서 윈도우에서 학습할 경우 Packet Cap..

리눅스 PLT와 GOT

PLT (Procedure Linkage Table) : Dynamic Link를 사용 시, 외부 라이브러리에 있는 함수를 연결해주는 테이블. 외부 프로시저를 연결해주는 테이블. PLT를 통해 다른 라이브러리에 있는 프로시저를 호출해 사용할 수 있다. GOT (Global Offset Table) : PLT이 참조하는 테이블로서, GOT에는 라이브러리 함수들의 실제 주소가 있다. PLT가 참조하는 테이블. 외부 라이브러리의 함수/변수의 주소를 담고 있다. 처음으로 함수를 실행한다면 GOT는 함수의 주소를 갖고 있지 않고, 어떤 과정을 거쳐 주소를 알아낸다. 두 번째 호출부터는 첫 번째 호출 때 알아낸 주소로 바로 점프한다. 함수를 실행하기 전 plt address -> got address (jmp pl..

리눅스 메모리 보호기법

리눅스 메모리 보호 기법은 Memory Curruption 공격인 Buffer Overflow를 보호하기 위한 목적으로 생기게 되었다. 메모리 보호 기법은 ASLR, NX, ASCII-Armor, Stack canary가 존재한다. 그럼 이제 각각의 보호 기법들이 하는 역할을 알아보겠다. 첫 번째 ASLR ASLR은 Address Space Layout Randomization의 약어로 메모리 상의 공격을 어렵게 하기 위해 실행 시 스택, 힙, 라이브러리 등의 주소를 랜덤으로 프로세스에게 할당하여 주소 공간을 배치한다. 실행할 때마다 주소 값이 달라지므로 공격자 입장에서는 공격할 주소를 알아내기 어렵게 된다. 아래 그림을 비교해보면 한번 실행한 것과 두 번 실행했을 때 주소 값들이 달라지는 것을 볼 수 ..

728x90
반응형