'Hacking'에 해당되는 글 142건

반응형

1. 취약점이란?

 : 사용자에게 허용된 권한 이상의 동작이나 정보 열람을 가능하게 하는 소프트웨어 설계상의 허점이나 결함


* Exploit : 취약점을 공격하여 원하는 코드를 실행하거나 특정 목적을 달성하는 공격코드

 - 공격코드를 이용한 공격행위 일체를 포함하기도 함.


* 제로데이 공격 : 취약점이 발견되고 패치가 개발되기 전까지의 기간에 이루어지는 공격


* Bug Bounty Program

- 국내 : 인터네침해대응센터(http://www.krcert.or.kr)

- 해외 : Bugcrowd (https://bugcrowd.com/programs)
          Hackerone (https://hackerone.com/programs)


2. 취약점 분류

[1] Memory Corruption 취약점

 : 버그로 인한 메모리 오염, 즉 예상되지 않은 메모리 값 변경, 참조 등에 의해 발생

 : 주로 프로그래밍 실수로 인해 발생

 : 가장 잘 알려진 BufferOverflow 취약점이 해당 취약점에 속함.


1) Stack Buffer Overflow

 : 주로 메모리 경계를 검사하지 않는 함수 사용으로 인해 스택을 덮어쓰게 되어 발생

 : 대표적인 취약함수로 strcpy, gets, scanf, strcat, getwd, sprintf 등이 있다.


2) Heap Buffer Overflow

 : 스택 오버플로우와 비슷하나, 그 대상이 힙 메모리라는 점이 다르다.


3) Integer Overflow

 : 정해진 자료형보다 큰 수를 저장할 때 발생하는 오버플로우 문제

 : 조건문 등에서 정해진 분기문이 아닌 다른 분기문을 실행하도록 하여 취약점을 발생시킴.


4) Format String Bug

 : 포맷스트링을 지정해 주지 않고 사용할 때 발생하는 취약점

 : %n, %hn 등의 일부 포맷스트링을 이용하여 메모리 값을 변조


5) Use-After-Free

 : 최근 브라우저에서 많이 발견되는 취약점

 : Free된 포인터를 사용할 때 발생


6) Double Free

 : Free된 메모리를 다시 Free할 때 발생

 : 대부분 프로그래밍 실수로 발생, Integer Overflow 등의 취약점으로 인해 발생하기도 함


7) Null Pointer Dereperence

 : 메모리 값이 지정되지 않은 초기화되지 않은 포인터(Null Pointer)에 값을 넣으려할 때 발생



3. Exploit 분류

 [1] Local Exploit

 : PC 혹은 서버 내부에서 실행하는 Exploit

 : 일반적으로 권한상승 혹은 코드 실행을 위해서 사용

 : 인자값을 직접 입력해주거나 특정 파일을 통해 입력값을 전달해야하므로 로컬상의 권한을 이미 가지고 있거나, 파일 싱행 등의 조건이 필요하다.

 : 윈도우의 경우 주로 직접 인자값에 입력하는 방식의 공격보다는 악성파일을 이용한 공격이 주를 이룬다.

 : 사용자에게 입력값을 받는 모든 프로그램은 취약점이 존재할 수 있다는 것을 명심


* 쉘 코드 : 공격자가 실행하길 원하는 코드


 [2] Remote Exploit

 : Local Exploit과 반대로 원격에서 이루어지는 공격

 : 원격에서 패킷을 보내 공격하므로 특정 포트를 열고 서비스를 제공하는 서버 프로그램이 타겟


 [3] 침투 절차

 - Remote Exploit은 원격에서 직접 공격이 가능하므로 주로 서버에 접근 권한을 얻기 위한 1차 공격으로 많이 사용

 - Remote Exploit을 통해 서버의 일반 사용자 권한을 획득한 뒤, Local Exploit을 통해 추가 권한 상승을 시도하는 것이 일반적인 침투 절차



* Exploit 검색 사이트

 - http://www.exploit-db.com

 - http://packetstormsecurity.com

 - http://www.securityfocus.com

반응형

'Hacking > System' 카테고리의 다른 글

PART3 쉘코드 원리와 작성(2)  (1) 2016.12.27
PART3 쉘코드 원리와 작성  (0) 2016.12.21
16.12.17 공부  (0) 2016.12.18
블로그 이미지

rootable

,

16.12.17 공부

Hacking/System 2016. 12. 18. 00:44
반응형

1. PE파일

종류 

설명 

EXE 

실행 파일 

SCR 

실행 파일(화면보호기) 

DLL 

라이브러리 

OCX 

라이브러리(ActiveX) 

SYS 

시스템 드라이버 

OBJ 

오브젝트 파일 


- PE 파일은 파일에 존재할 때의 구조와 메모리에 로드된 후의 모습이 달라진다.

- 파일에서는 첫 바이트부터의 거리를 뜻하는 offset을 사용하고, 메모리에서는 VA(Virual Address, 가상주소)와 RVA(Relative Virtual Address, 상대적 가상주소)를 사용

- PE 파일이 메모리에 로드될 때 한 주소에 고정적으로 로딩되는 것이 아니기 때문에 상대주소 사용


* Alignment = 여러 내부 연산 등 처리상의 효율성을 위해 특정 단위로 간격을 맞춰주는 것

 - Section Alignment 값이 File Alignment 값보다 커서 메모리에 로드된 PE 파일의 사이즈가 파일 형태일 때보다 크다.

 - PE에서 남는 공간은 널바이트로 채워줌.



1) Image_DOS_Header와 DOS Stub

 = PE포맷의 시작 부분에 위치한 40바이트의 구조체

 = Windows가 아닌 DOS운영체제를 위한 것(DOS에서 PE파일이 실행되는 경우를 위해 만들어진 것)


* e_magic

 = PE파일임을 나타내주는 첫 2개의 바이트

 = MZ(5A4D)로 고정 (MZ가 아니면 PE파일로 인식 X)


* e_lfanew

 = NT Header가 시작되는 위치의 offset을 나타냄


* DOS Stub

 = DOS용 실행 코드 (DOS가 아니면 실행조차 되지 않음)


2) Image_NT_Headers

 = NT헤더임을 나타내는 시그니처인 "P E 0 0" 4바이트로 시작

 = FileHeader와 OptionalHeader를 멤버로 가지는 구조체


* FileHeader

 - Machine : 이 파일의 실행 대상 플랫폼(상수값으로 나타냄)

  ex) Intel386 = 0x014c // Intel64 = 0x0200 // ARM = 0x01c0

 - NumberOfSetions : 파일에 존재하는 섹션의 수(파일에 따라 섹션의 갯수는 달라질 수 있음)

 - SizeOfOptionalHeader : 바로 이어지는 Optional Header의 크기를 알려줌

 - Characteristics : PE 파일의 특성을 알려줌 -> 이를 통해 DLL인지, 실행파일인지 알 수 있음 (마지막 멤버, 최종 값은 해당되는 속성들의 OR 값으로 표시)

  ex) IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002 // IMAGE_FILE_32BIT_MACHINE = 0x0100 // IMAGE_FILE_DLL = 0x2000


* Image_Optional_Header

 - Magic : Image_Optional_Header32인지 64인지 구분 (32 = 0x10B / 64=0x20B)

 - Address of EntryPoint : 파일이 메모리에 매핑된 후 코드 시작 주소를 나타냄 (PE 로더는 ImageBase 값에 이 값을 더해 코드 시작 지점으로 설정)

 - SectionAlignment, FileAlignment : 각각 메모리와 파일 상태에서의 정렬값 (각 섹션은 반드시 Alignment의 배수여야 한다)

 - Subsystem : 동작환경 정의

  ex) 시스템 드라이버 파일인 sys = 0x1

       GUI프로그램 = 0x2

       CLI 프로그램 = 0x3

 - DataDirectory : NumberOfRvaAndSizes를 통해 디렉토리 수를 정해줄 수 있으나 일반적으로 정형화된 16개의 디렉토리를 가짐.


  • Export Directory : DLL 등의 파일에서 외부에 함수를 공개하기 위한 정보들을 가짐
  • Import Directory : 프로그램 실행을 위해 Import하는 DLL 이름과 사용할 함수정보가 담긴 INT(Import Name Table), IAT(Import Address Table)주소 등의 정보가 들어있음.
3) Section Header
 = 실제 파일의 내용들이 존재하는 부분
 = 각 섹션별로 섹션의 정보를 담고 있는 헤더를 가지고 있다.

* VirtualSize, VirtualAddress = 메모리상에서의 크기와 주소
* SizeOfRawData, PointerToRawData = 파일 상에서의 크기와 offset

* Characteristics = 각 섹션의 특징을 알려줌

 ex) IMAGE_SCN_CNT_CODE       = 0x00000020 // 섹션이 코드를 포함

      IMAGE_SCN_MEM_EXECUTE = 0x20000000 // 섹션 실행 권한 존재

      IMAGE_SCN_MEM_READ     = 0x40000000 // 섹션 읽기 권한 존재

      IMAGE_SCN_MEM_WRITE    = 0x80000000 // 섹션 쓰기 권한 존재

반응형

'Hacking > System' 카테고리의 다른 글

PART3 쉘코드 원리와 작성(2)  (1) 2016.12.27
PART3 쉘코드 원리와 작성  (0) 2016.12.21
16.12.19 공부일지  (0) 2016.12.20
블로그 이미지

rootable

,

16.11.20 공부

Hacking/Web 2016. 11. 20. 18:45
반응형

SQL Injection 관련

* MySQL 주석처리

1) -- : 주의할 점은 -- 뒤에 반드시 스페이스로 한 칸을 띄워야 한다.

2) #


* sqlmap 옵션

 옵션

설명 

--url 

목표 URL 설정

sqlmap --url "http://test.com"

--level 

테스트 단계의 수준 설정, 1~5까지 있으며 숫자가 높을수록 깊은 단계의 테스트 수행

sqlmap --url "http://test.com" --level 3 

--risk 

테스트의 인젝션 위험도 설정, 0~3까지 있으며 숫자가 높을수록 위험도가 높음

sqlmap --url "http://test.com" --risk 3

--dbms 

DBMS를 지정하여 테스트하도록 강제

sqlmap --url "http://test.com" --DBMS MySQL 

--T 

DBMS의 테이블 지정

sqlmap --url "http://test.com" --DBMS MySQL --T [tablename] 

--columns 

DBMS의 해당 테이블에 있는 칼럼 나열

sqlmap --url "http://test.com" --DBMS MySQL --T [tablename] 

--columns

 --tables

DBMS의 테이블들 나열

sqlmap --url "http://test.com" --DBMS MySQL --tables

 -C

특정 칼럼의 정보 획득

sqlmap --url "http://test.com" --level 3 --risk 3 -T wp_users --columns -C user_login,user_pass 

 --dump

명령어 실행 결과를 파일로 저장

sqlmap --url "http://test.com" --level 3 --risk 3 -T wp_users --columns -C user_login,user_pass --dump 


* SQLmap 이용한 관리자 계정 정보 획득 공격 순서

1) 테이블 정보 확인

2) 유저 정보 테이블의 칼럼 확인

3) ID와 PW 칼럼의 정보를 확인하여 저장 


LFI & RFI 관련

* LFI = Local File Inclusion ( 서버에 직접 올린 악성코드를 include )

  RFI = Remote File Inclusion ( 외부 서버의 악성코드를 include )

 

* 웹 서버에 악성 코드를 넣는 기법

 - 대표적인 것이 PHP의 include 함수


* PHP는 C언어로 개발된 스크립트로 C언어의 특성을 물려받았다.

 - Null Byte(0x00)을 만나면 문자열의 끝으로 인식

 - Null Byte의 URL 인코딩 값 = '%00'


http://127.0.0.1/lfi/vulnerable.php?COLOR=C:\\Temp\\password.txt%00

 - 색을 매개변수로 받는 vulnerable.php에서 색 대신 서버 상의 파일을 입력 ( GET 방식이기 때문에 가능 )

 - vulnerable.php에서 파일명 뒤에 .php를 붙이기 때문에 Null Byte를 넣어 붙이지 않게 한다. ( = Null Byte 인젝션 = 퍼센트 인코딩(Percent Encoding) )


* cURL(Command line tool for transferring files with URL syntax) 

 = 커맨드 라인으로 HTTP 프로토콜 등의 데이터를 전송하는 도구

ex) curl -X POST -f "rootpath=/etc/passwd" --url http://192.168.0.2/wodrpress/wp-content/plugins/really-simple-guest-post/simple-guest-post-submit.php

(https://www.exploit-db.com/exploits/37209 취약점 관련)


*cURL 옵션

 -X는 무슨 HTTP 메서드를 사용하는지 옵션(GET,HEAD,POST,PUT,DELETE 등등)

 -X는 --request와 동일하다.

curl -X 명령어 == curl --request 명령어


* Path Traversal = 경로 탐색으로 특정 파일을 LFI시키는 것


참고 - 웹 해킹 입문 (이상한 지음, 프리렉 출판)

반응형

'Hacking > Web' 카테고리의 다른 글

해킹맛보기 웹 해킹 파트 정리  (0) 2017.01.08
구글 고급 연산자  (0) 2017.01.08
Burp Suite HTTPS에서도 사용하기  (0) 2017.01.07
구글 검색 패턴 DB  (0) 2015.02.13
구글 검색 연산자  (0) 2015.02.13
블로그 이미지

rootable

,
반응형

윈도우즈 애플리케이션 취약점을 공부하기 위해 modern.IE에서 가상화 PC를 받아 VMware에서 돌렸다.

공부하기 위해 Immunity debugger를 설치하였는데 설치까지 잘 되었다.


바탕화면에 있는 아이콘을 더블클릭하면 간편하게 실행이 된다고 하였는데

번쩍 실행창이 떴다가 바로 꺼져버렸다.


검색을 해본 결과 64bit에서 Program Files (x86)에 설치될 경우 쓰기가 제대로 되지 않아서 그럴 수 있다고 하였다.

(만약 설치하는 OS가 64bit이고 immunity debugger가 설치된 곳이 Program Files (x86) 이라면 C드라이브 밑에 새로 폴더를 생성하여 그 곳에 설치를 해보세요)


하지만 내가 사용하는 것은 WinXP의 32bit 운영체제여서 그렇게 해봐도 해결되지 않았다.

몇일을 고민하다 갑자기 immunity debugger는 python을 사용하는데 python을 실행시키지 못한 것이 아닐까? 라는 생각이 들었다.

바로 cmd창을 켜고 python을 친 결과 역시 python을 실행시킬 수 없었다.

그래서 나는 환경변수에 python을 넣어준 뒤 cmd에서 python이 실행되는 것을 확인한 뒤 immunity debugger를 다시 실행시켜 보았다.


그 결과는....두근두근... 성공!! 역시 문제는 python을 연동시킬 수 없었기 때문에 바로 꺼진 것이였다.

저와 같은 문제가 발생하신 분들은 python을 환경변수에 추가하여 cmd창에서 python이 실행되도록 한 뒤 immunity debugger를 실행하세요.


* 환경변수 추가 = 내 컴퓨터 -> 속성 -> 고급 시스템 설정 -> 환경 변수 -> 시스템 변수의 Path 변수에 Python 설치 공간 넣고 확인


반응형

'Hacking > Reversing' 카테고리의 다른 글

Ollydbg 창 설명 및 기초  (0) 2019.02.10
Visual Basic 파일 분석  (0) 2018.11.18
3월 5일자  (0) 2018.03.05
블로그 이미지

rootable

,
반응형

검색을 하여 정보수집이 정말 중요한 해커에게 좋은 사이트이다.


접속을 하면 위와 같은 창이 뜨는데 각각 

패스워드가 포함된 파일이나 유저명이 포함된 파일을 찾을 수 있는 패턴을 알려준다.



취약점 파일을 찾을 패턴들도 알려주니 필요한 패턴이 필요할 때 들어가서 찾아보면 좋을 듯 하다.

찾아보다보면 응용해서 나만의 패턴을 만들 수도 있지 않을까?


http://www.hackersforcharity.org/ghdb/

반응형

'Hacking > Web' 카테고리의 다른 글

해킹맛보기 웹 해킹 파트 정리  (0) 2017.01.08
구글 고급 연산자  (0) 2017.01.08
Burp Suite HTTPS에서도 사용하기  (0) 2017.01.07
16.11.20 공부  (0) 2016.11.20
구글 검색 연산자  (0) 2015.02.13
블로그 이미지

rootable

,
반응형

참조: 해킹 맛보기

표1) 부울 연산자

산자

사용 예

설명

AND 

"가" & "나"

"가" "나"

"가" AND "나" 

"가"와 "나"의 문자열을 모두 포함하는 문서 검색 

OR 

"가"|"나"

"가" OR "나" 

"가" 혹은 "나" 문자열을 포함하는 문서 검색 

 NOT

"가나다" - "한글"

"가나다" NOT "한글" 

"가나다" 문자열을 포함하고 "한글" 문자열은 제외한 문서 검색 


표2) 검색 연산자

연산자 

사용 예 

설명 

 ""

"security conference" 

인용부호를 사용해 정확한 단어 혹은 문구를 검색한다. 

 ~

~hacking 

동의어 또는 관련 검색어와 함께 검색한다. 

 *

* 모아 * 이다 

알 수 없는 단어가 위치한 부분에 "*" 연산자를 사용해 검색한다 

 ..

월드컵 1950..2000 

숫자 사이에 ".."를 넣어 가격, 수치와 같이 범위 문서를 검색한다. 


표3) 구글 검색 고급 연산자

 연산자

사용 예 

설명 

 inurl:

inurl:abc 

주소에 "abc"가 들어간 문서 검색 

 intitle:

intitle:해킹 

Title에 "해킹"이 들어간 문서 검색 

 intext:

intext:로그인 

본문에 "로그인"이 들어간 문서 검색 

 Site:

site:http://abc 

http://abc 문서에서의 검색 

 link:

link:http://abc 

http://abc의 링크가 걸린 문서 검색 

 inanchor

inanchor:http://abc 

http://abc가 텍스트로 표현된 문서 검색 

 filetype:

filetype:jpg 

jpg 확장자 검색 

 cache:

cache:http://abc 

구글에 저장된 http://abc 페이지 보기 

 numrange:

numrange:1000-2000 

1000-2000 숫자 범위의 결과를 검색 


반응형

'Hacking > Web' 카테고리의 다른 글

해킹맛보기 웹 해킹 파트 정리  (0) 2017.01.08
구글 고급 연산자  (0) 2017.01.08
Burp Suite HTTPS에서도 사용하기  (0) 2017.01.07
16.11.20 공부  (0) 2016.11.20
구글 검색 패턴 DB  (0) 2015.02.13
블로그 이미지

rootable

,