반응형
SMALL

'전체 글'에 해당되는 글 209건

반응형
LIST

NMAP 실습

메타스플로잇 2018. 2. 10. 22:28
반응형
SMALL

NMAP은 강력한 스캐닝 기능을 제공한다. 그렇기 때문에 모의해킹을 할 때 NMAP을 통해 좀 더 많은 정보를 얻으면 그만큼 업무를 하기에도 수월해 질 수 있다.


실습 2) Nmap



db_nmap -sT -sV -O 10.10.10.0/29라는 명령어로 nmap을 실행시켜 준다. 여기서 -sT는 TCP를 전부 스캐닝 해주겠다는 의미이고 -sV는 버전을 체크해주겠다는 의미이고 -O은 운영체제까지도 전부 스캐닝 해주겠다는 의미이다. 이러한 옵션들을 지정해주고 실행시켜주면 nmap이 실행이 되게 된다.



Nmap 스캐닝 결과이다. 일반적인 exploit으로 공격한 결과 값보다 더 자세하게 나왔음을 볼 수 있다. port번호와 version을 어떤 것을 쓰고 있는지 상세하게 알려주고 있다. OS도 윈도우 XP를 쓰고 있다는 것을 스캐닝 한 것도 볼 수 있다.





hosts로 검색해봐도 일반 exploit으로 공격 했던 결과 값보다 더 자세하게 나와있다. services 또한 port, version, OS 정보들까지 자세하게 나와있다. 이러한 점 때문에 nmap은 모의해킹 업무를 할 때 많이 사용되고 있다.



실제 모의해킹을 할 땐 적게는 10대 이상 많게는 수백대 이상 진단을 하면서 업무를 봐야하는 경우가 있는데 nmap을 실행시켜보면 지금보다 훨씬 더 많은 정보들이 나올 것이다. 그렇기 때문에 본인이 꼭 봐야 하는 정보들이 있을텐데 한 눈에 쉽게 볼 수 있는 방법도 있다. 사진에 나와 있는 명령어를 입력해서 실행시키면 windows xp만 필터링 걸어서 보여준다. -c는 컬럼을 의미하며 뒤에 컬럼 이름들을 써주고 -S 뒤에 컬럼 안에서 해당되는 내용을 입력해주면 보다 편하게 결과 값을 볼 수 있다.



services 또한 같은 방법으로 본인이 원하는 결과 값을 필터링 걸어서 볼 수 있다.





이번에는 현재 스캐닝된 주소들을 Rhost에 통합시켜서 set하는 방법이다. hosts -S windows -R이라는 옵션을 주면 windows에 관련된 IP주소들을 모두 Rhost에 통합시켜 set을 하게 된다. 꼭 필요한 컴퓨터들만 골라서 exploit을 해줄 수도 있다.



이번에는 지금까지 했던 정보들을 xml파일을 만들어서 저장시키는 방법이다. 여태까지 스캐닝하고 결과값 낸 것들이 아깝다는 생각이 들면 이런식으로 DB를 export 시켜 파일을 만들어서 저장시켜주는 방법도 있다. 이런식으로 저장을 잘 해놓으면 나중에 DB 정보들, 로그정보들에 대해 분석할 때도 쓰일 수 있으니 항상 백업해두는 습관을 가져야 한다.





반응형
LIST

'메타스플로잇' 카테고리의 다른 글

메타스플로잇 TCP 통신  (0) 2018.04.19
adobe flash player 취약점  (0) 2018.02.28
metasploitables 해킹  (0) 2018.02.13
mysql 해킹 실습  (0) 2018.02.11
MSF 기본공격  (0) 2018.01.28
블로그 이미지

만년필석사

,
반응형
SMALL

1. MSF 공격순서



먼저 msfconsole을 실행시키게 된다. 그리고 어떤 모듈을 사용할지 검색하게 되는데 이 때 사용하는 명령어가 search이다. 모듈을 탐색시키면 많은 정보들이 나오는데 정보들 중에서 사용할 모듈을 선정하게 되는데  이 때 사용하는 명령어가 use이다. 그리고 그 모듈에 대해 좀 더 자세히 알고 싶다면 info명령어를 쓰게 되는데 이건 해도 되고 안해도 되긴 한다. 모듈에 대한 옵션을 보기 위해 show options라는 명령어를 쓰게 되고 모듈에 사용할 필요 정보를 설정해야 하는데 이 때 사용하는 명령어가 set이다. 모듈에 사용할 필요 정보들을 설정한 후에는 exploit를 사용해서 모듈을 실행하게 된다. 모듈이 실행되고 나면 meterpreter가 생성되는데 추가 공격을 할 것이 있으면 사용되게 된다.


** 가장 기본적인 공격 순서 **

search use info show set (check) - exploit(run) 


2. MSF 공격 실습




칼리리눅스 창을 띄우고 경로를 사진과 같이 바꿔주고 service postgresql start를 입력해준다. msfconsole을 바로 실행시킬 수도 있기는 하지만 DB와 연동하기 위해 실행시켜주는 명령어이다. 




msfdb init라는 명령어를 입력해주면 DB와 연동이 되게 된다. 그리고 msfconsole 명령어를 이용해 msfconsole을 실행시켜준다.



그리고 search 명령어를 실행시켜 exploit를 탐색시켜준다. exploit이라고 치면 굉장히 많은 모듈이 나올 것이다.



사진과 같이 무수히 많은 exploit 모듈이 나오게 된다. 이 중에서 어떤걸 사용할 것인지 찾아보면 된다.



사용할 모듈을 use 명령어로 경로를 입력해주면 사용하는 모듈 형태로 바뀌게 된다. 그리고 show options 명령을 줘서 모듈 옵션상태를 본다. Required를 보면 yes라고 나와있는데 yes라고 나와있는 항목이 하나라도 비게 되면 모듈실행이 되지 않는다. Set명령어를 줘서 공격할 pc IP주소를 입력해준다.



정상적으로 set 명령이 실행이 되면 RHOST에 본인이 입력한 IP주소가 들어가게 된다. 



exploit 명령어를 써서 모듈을 실행하게 되면 다음과 같이 공격이 진행되고 있음을 볼 수 있다. 이미 필자가 설치해놓은 xp PC가 공격이 되었음을 볼 수 있다.


반응형
LIST

'메타스플로잇' 카테고리의 다른 글

메타스플로잇 TCP 통신  (0) 2018.04.19
adobe flash player 취약점  (0) 2018.02.28
metasploitables 해킹  (0) 2018.02.13
mysql 해킹 실습  (0) 2018.02.11
NMAP 실습  (0) 2018.02.10
블로그 이미지

만년필석사

,
반응형
SMALL

이번 실습은 MP3 플레이어 컨버터를 이용한 Exploit을 한다. 최종적으로 올리디버거를 이용해 계산기를 출력하는게 목표다.



* 컨버터 실습 *



모나를 실행시켜 !mona pattern_create 10000을 입력해서 패턴을 만든다.



만들어준 패턴을 보기 위해 immunity Debugger 아이콘 오른쪽을 클릭해 properties를 실행시켜 find target을 실행시켜 모나를 실행시켜 만든 pattern을 찾는다. 패턴을 찾은 후 10000개의 문자열을 복사한다.





계산기 소스에 payload에 20000 + 옆에 문자열들을 붙여 넣는다. 이름은 test라고 저장한다.



mp3 컨버터로 test를 실행시켜주면 오버플로우가 발생하게 된다. debug버튼을 눌러 올리디버거와 연결시킨다.



올리디버거를 실행시키면 EIP에 34754833이라고 나오면 정상이다. 이 값을 복사한다.



모나를 실행시켜 offset 뒤에 복사한 값을 붙여넣어서 실행시키면 포지션은 6071이라는 값이 나온다. 최종적으로 만들려는 버퍼 길이는 26071이 된다.



\x90은 사실상 아무것도 하진 않는다. 하지만 주소값을 buf쪽에 전달하는 역할만 한다. RET가 주소값을 리턴시키면 \x90을 거친 후 buf라는 곳으로 주소값이 전달되어 계산기가 실행되게 된다. 



test1을 mp3컨버터로 실행시켜보면 스택쪽을 보면 주소값을 어디로 리턴시켜줄지 찾아야 되는데 일단은 90909090으로 반복되는 부분 거의 끝에 해당하는 값을 찾는다. 오버플로우가 나지 않는 선에서 스택값을 찾아야 한다.



0x00FFD80값으로 바꿔주고 test2로 저장한다.



test2를 MP3 컨버터를 활용해서 실행시켜보면 계산기가 화면과 같이 실행된다. 이처럼 오버플로우를 이용하고 offset값을 찾아 RET를 잘 이용해주면 이런식으로 프로그램을 실행할 수 있다.

반응형
LIST

'악성코드분석' 카테고리의 다른 글

리버싱 기초 (1)  (0) 2021.01.10
UPX 자동 언패킹  (0) 2021.01.05
ollydbg와 mona를 이용한 BOF 실습  (0) 2018.01.21
BOF 기초실습  (0) 2018.01.21
stack과 BOF 개념  (0) 2018.01.21
블로그 이미지

만년필석사

,
반응형
SMALL

BOF 기초에서는 어디서 오버플로우가 나는지 알고 실습을 했었는데 이번에는 아예 모르는 상태에서 어디서부터 오버플로우가 발생하는지 알아보는 실습이다.




먼저 올리디버그에 접속해서 just in time debugging을 클릭해서 사진과 같이 2개만 활성화 시켜준다.




그리고 Immunity Debbug를 열어서 mona를 실행시켜 !mona pattern_create 120을 입력해준다. 보통 패턴은 100이 넘어갈때 많이 발생하니 120정도면 딱 적당하다.




Immunity Debbug 아이콘 오른쪽을 클릭해 find target을 눌러 만든 패턴에 대해 열고 문자열들을 그대로 카피해준다.






그리고 cmd창을 열어 지난번에 만들었던 BOF를 열어 그대로 문자열들을 붙여넣어주면 오버플로우 메시지가 나오게 된다. 여기서 Debug를 눌러준다.




그렇게 되면 EIP에 41366441이라는 숫자가 뜨게 되는데 이 EIP값을 그대로 복사해준다.




그리고 mona를 실행시켜 !mona pattern_offset  뒤에 방금 복사한 숫자를 붙여넣어 실행시켜 주면 된다. 실행결과를 보면 position 108이라고 메시지가 나와 있는데 여기서부터 오버플로우가 발생한다는 의미이다. 이런식으로 offset을 찾아서 어디부터 오버플로우가 발생할 수 있는지, 취약점이 발생할 수 있는지 정확하게 알 수 있다.

반응형
LIST

'악성코드분석' 카테고리의 다른 글

리버싱 기초 (1)  (0) 2021.01.10
UPX 자동 언패킹  (0) 2021.01.05
MP3 컨버터를 이용한 Exploit  (0) 2018.01.21
BOF 기초실습  (0) 2018.01.21
stack과 BOF 개념  (0) 2018.01.21
블로그 이미지

만년필석사

,
반응형
SMALL

이번엔 간단한 BOF실습이다. 인터넷에 돌아다니다 보면 코드가 많이 떠다닌다. 일단 C언어로 BOF를 작성했다.






버퍼에 100개이상이 채워지면 오버플로우가 발생하게 되는 코드이다. 이 코드를 실행시켜 준다.



그리고 cmd창을 띄워서 실행시켜보면 A가 100개가 정확히 들어갔을 때는 오류메시지가 나오지 않지만 그 이상을 넘어갔을시엔 사진과 같은 오류가 발생했다. 현재 DDDD까지 채워져 스택프레임이 초과된 상태이다. 그리고 Debug를 눌러보면 올리디버거로 연결이 된다.



이런식으로 올리디버거 결과값을 보면 레지스터 값에 EIP값이 전부 DDDD로 덮였음을 볼 수 있다. 현재 이 스택프레임은 DDDD로 전부 덮여버린 상황이다. 4444444는 DDDD를 의미하며 아스키코드로 D는 44이다. 이렇게 버퍼오버플로우가 발생하게 되면 RET취약점이 바로 발생할 수 있기 때문에 strcpy와 같은 C언어 코드는 되도록이면 피하는 것이 좋다.

반응형
LIST

'악성코드분석' 카테고리의 다른 글

리버싱 기초 (1)  (0) 2021.01.10
UPX 자동 언패킹  (0) 2021.01.05
MP3 컨버터를 이용한 Exploit  (0) 2018.01.21
ollydbg와 mona를 이용한 BOF 실습  (0) 2018.01.21
stack과 BOF 개념  (0) 2018.01.21
블로그 이미지

만년필석사

,
반응형
SMALL

BOF는 버퍼오버플로우의 약자이다. 해킹공격중에 버퍼오버플로우 공격에 대해 가장 많이 들어봤을텐데 그만큼 흔한 공격이고 아직까지 완벽한 방어대책이 나오진 않았다. 항상 ASLR을 우회해서 공격하는 등 공격수법도 다양하다. 



1. Stack이란?





<사진출저: 누렁이의 IT세상>



스택이란 자료구조에서 LIFO방식을 의미한다. 나중에 들어간 것이 먼저 나오는 구조이다. 리버싱에서는 스택과 메모리구조 개념이 매우 중요하게 다루어진다. 기본적으로 스택, 메모리구조, 주소값 등을 이해하지 못하면 추후 모의해킹 뿐만 아니라 악성코드 분석을 하는데 있어서도 많은 난항을 겪게 된다. 


- EBP: 스택프레임의 처음의 주소가 저장되는 공간이다. 가장 먼저 push가 된다.

- ESP: 스택프레임의 맨 나중에 들어온 주소가 저장되는 공간이다. 가장 나중에 push가 된다.

- EIP: 다음에 실행할 명령어의 메모리 주소가 저장된다. 컴퓨터구조의 PC와 개념이 똑같다.


PUSH를 하게 되면 스택주기가 4바이트만큼 감소하면서 데이터가 저장되고 POP을 하면 4바이트만큼 증가하면서 데이터가 빠져나가게 된다. 




<사진출저: 보안프로젝트>



사진은 스택프레임이 어떤것인지 알기 위해 첨부했는데 일단 변수 m1, m2가 주소값 100,99라인에 저장이 되게 된다. 그리고 m1 = 1이 주소값 98번째 라인에 저장이 되게 된다. 여기에서 EBP값은 매번 다르게 들어가게 된다. main함수 기준으로 봤을땐 EBP값이 주소값 100번째라인에 들어가지만 A() 실행값 기준으로 봤을땐 EBP값이 98번째 라인부터 들어가게 된다. EBP는 기준에 따라 항상 달라질 수 있기 때문에 어디가 무조껀 EBP다라고 말하면 안된다. 스택프레임은 RET(리턴주소), 그위에 EBP, 그리고 나머지 기타 변수들이 하나씩 채워져 하나의 스택프레임을 구성하게 된다. 



2. BOF란?

버퍼오버플로우의 약자로 가장 흔한 공격이다. 스택이 꽉차게 되면 RET값을 변조해서 공격하는 방법이 가장 흔하다.



<사진출저: 보안프로젝트>



일단 RET위에 ebp가 삽입되고 그 위에 변수들이 삽입이 되게 된다. 보통 스택프레임은 이런식으로 구성이 되게 되지만 스택프레임이 꽉찼을 때 문제가 발생하게 된다. 만약 100번째 주소지(EBP)까지 전부 내용이 꽉차게 된다면 RET는 100번째까지 삽입된 데이터로 전부 변경이 되기 때문에 함수가 종료될때 엉뚱한 곳으로 복귀 주소를 실행시켜서 사용자가 뜻하지 않게 종료가 되게 된다. 이러한 오버플로우 취약점을 활용해서 블랙해커들이 오버플로우 길이 내용을 전부 변조시켜서 공격하는게 가장 큰 문제점이다. 스택프레임이 꽉차서 RET가 어디로 복귀주소를 보내줘야 하는지 몰라 헤멜때 발생하게 된다.




반응형
LIST

'악성코드분석' 카테고리의 다른 글

리버싱 기초 (1)  (0) 2021.01.10
UPX 자동 언패킹  (0) 2021.01.05
MP3 컨버터를 이용한 Exploit  (0) 2018.01.21
ollydbg와 mona를 이용한 BOF 실습  (0) 2018.01.21
BOF 기초실습  (0) 2018.01.21
블로그 이미지

만년필석사

,
반응형
SMALL

1. Cross site Scripting 이란?


- 주로 웹 어플리케이션에 악성스크립트를 삽입해서 공격하는 기법이다.

- 사용자 세션을 탈취하거나 권한을 획득, 사이트 변조등과 같은 악의적인 목적으로 사용될 수 있다.

- 주로 XSS공격은 2가지로 분류가 가능한데 Reflected방식과 Stored방식으로 분류할 수 있다. 주로 반사형방식은 서버로 내용들이 전송되지 않고 페이지 자체에서 받는 방법을 사용하게 되는데 링크로 접근할시 노출이 된다. Stored방식은 서버에 있는 DB에 악성스크립트를 심어서 사용자가 그걸 클릭하게 되면 자동으로 저장된 악의적인 코드가 동작이 되게 하는 방식이다. 주로 게시판이나 댓글 같은 곳에 많이 사용되는 공격 기법이다.



<Reflected 취약점의 예시>


URL에 seok라는 글자만 추가해줘도 저런식으로 공격이 발생할 수 있다. 링크를 이용한 공격이다.



<Reflected 취약점을 이용한 악성자바스크립트 삽입 공격>


name뒤에 alert라는 경고창 메시지를 삽입해서 이런식으로 공격이 가능하게 된다.



<stored 취약점을 활용한 공격 방식>


이처럼 게시판, 댓글을 사용해서 악의적인 스크립트를 DB에 삽입시키고 공격하는 수법이 Stored 방식이다. 한번 공격을 하고 나면 계속 흔적이 남아있어 지속형 공격이라고도 불린다.



2. 취약점 로그 패턴 분석




ZAP툴에서 XSS라고 이름을 지정해놓고 보고서툴을 만들어서 액티브스캔을 시켜준다. vulnerabilities 취약점을 활용한 것이기 때문에 여기다가 액티브 스캔을 해서 로그를 추출한다.



정상적으로 추출이 되었으면 이런식으로 <script>alert</script>와 같은 방식으로 추출이 됨을 볼 수 있다. 


ZAP 툴에서 보고서형식으로 저장해서 로그를 추출해보면 다음과 같이 많은 패턴들을 볼 수 있다. 우선 추출해본 패턴은 다음과 같다.


- ><script>alert(1);</script>
- "><script>alert(1);</script>
- ‘”<script>alert(1);</script>
- <pre><script>alert(1);</script></pre>
- <div><script>alert(1);</script></div>
- </td><script>alert(1);</script><td>
- </p><script>alert(1);</script><p>
- </h2><script>alert(1);</script><h2>
- javascript:alert(1)


하지만 스구일툴에는 추출되지 않은 패턴들이 있어서 새로운 스노트규칙을 적용해서 추출해줘야 찾은 규칙들이 탐지가 됨을 알 수 있다. 


3. 새로운 스노트 규칙 적용하기




일단 javascript:alert(1)에 대해서 로그결과를 추출해내기 위해 사진과 같이 스노트 규칙을 정해주었다. 기존보다는 조금 추가된부분도 있긴 한데 큰차이는 없다. 하지만 http_client_body와 http_uri의 차이점은 분명히 존재한다. http_uri는 <script>라는 문자열값을 넣으면 그대로 인식해서 탐지가 가능하지만 http_client_body는 <script>라는 문자열을 인식하지 못해 탐지하지 못한다. 그렇기 때문에 %3C와 같은 16진수 문자열 값으로 content값을 넣어주는 것이다. 이렇게 적용하고 sudo rule-update를 시켜 규칙을 적용시킨다.




다시 스캔을 시켜 탐지해보면 사진과 같은화면이 나오게 된다. 내용을 보면 상단부분에 javascript라는 문구가 탐지되었음을 알 수 있다. http_uri를 적용시킨 결과이다.



이번에는 http_clinet_body 출력결과이다. 맨 윗상단에는 탐지가 되지 않았지만 아래로 내려와 body부분을 확인해보면 javascript라고 해서 정상적으로 탐지가 되었음을 볼 수 있다. 지금 적용한 스노트 규칙 말고도 다른 규칙을 적용하게 된다면 사용자가 원하는 패턴을 쉽게 찾아 낼 수 있을 것이다.


반응형
LIST
블로그 이미지

만년필석사

,
반응형
SMALL


1. Remote OS Commnad Injection 개념


- 원격에서 명령어를 삽입할 시 나타나는 취약점이다.

- 웹에서 사용한 쉘 명령어 함수를 2차검증을 하지 않고 그냥 실행시켰을 때 나타나는 취약점이다.

- 검증하지 않으면 &, ;, | 등과 같은 기호로 명령어 사용이 가능해진다.

- 웹 페이지에 파일 경로들이 노출되게 되는 위험한 취약점이라고 볼 수 있다.


2. Remote OS Commnad Injection 로그 및 패턴추출


먼저 액티브 스캔을 시켜준다. ZAP툴에서 Remote OS Command Injection이라고 보고서 툴에서 추가해서 만들어주고 액티브 스캔을 시킨다. injection항목들을 잘 확인하고 추출해야 올바른 결과값이 나온다.




사진처럼 Remote OS Command의 로그를 추출해보면 무수히 많은데 어떤 패턴이 사용되었는지 알아보는 것이 가장 중요하다. 많은 패턴이 있었지만 15개정도로 추려서 뽑아본 목록은 아래와 같다. 보고서양식으로 추출해서 노트패드로 추출한 결과이다.



- &cat%20/etc/passwd&
- ;cat%20/etc/passwd;
- %22&cat%20/etc/passwd&%22
- %22;cat%20/etc/passwd;%22
- '&cat%20/etc/passwd&'
- ';cat%20/etc/passwd;'
- &sleep%205s&
- ;sleep%205s;
- &sleep%20%7B0%7Ds&
- ;sleep%20%7B0%7Ds;
- %22&type%20%25SYSTEMROOT%25%5Cwin.ini&%22
- &type%20%25SYSTEMROOT%25%5Cwin.ini
- %7Ctype%20%25SYSTEMROOT%25%5Cwin.ini
- '&type%20%25SYSTEMROOT%25%5Cwin.ini&'
- '%7Ctype%20%25SYSTEMROOT%25%5Cwin.i




추출해보면 스구일 툴에서도 이런식으로 결과가 나왔다는 것을 볼 수 있다. 하지만 내가 원하는 결과값으로 나오지는 않았다. cat /etc/passwd와 같은 규칙들은 나왔으나 다른 규칙들은 잘 나오지가 않았다. 그래서 스노트규칙을 활용해서 규칙들을 추가해주었다.


3. 탐지 안된 패턴들 규칙 적용하기


 

이런식으로 스노트 규칙을 추가해주었다. 외부ip에서 내부 ip로 들어온다는 규칙은 똑같지만 content쪽에서 규칙이 적용되었다. 여러가지 리눅스 명령어를 추가하고 /, \등 현재 찾은 규칙에 맞게 스노트규칙들을 적용해주었다.



그리고 sudo rule-update명령을 활용해서 새로적용한 룰을 업데이트 시켜준다.




그리고 나서 다시 ZAP툴로 탐지를 시켜서 결과를 확인해보면 아까 탐지가 안되었던 부분들도 탐지가 되고 있으며 헤더와 URI로 나누어서 잘 탐지가 되었음을 볼 수 있다. 이처럼 PCRE명령어를 잘 사용하면 \,/,띄어쓰기 등을 탐지할 수 있다. 아까 추가한 cat, type, dir등이 있는데 이 부분에 다른 sleep과 같은 명령어를 써주면 탐지해낼 수 있다.

반응형
LIST
블로그 이미지

만년필석사

,