2019. 1. 11.

[WEB] 버프스위트 필터 기능 팁

버프스위트 필터 기능 활용할때 유용한 팁 하나를 기록한다.

Proxy - http history 에서 필터를 클릭하면 다양한 옵션을 지정 할수 있다

잘 활용하면 아주 편리하다.

Filter by search item 에 찾고자하는 문자열 넣으면 해당 문자열이 포함되어 있는 항목만 출력된다.

Case sensitive 는 대소문자 구별
Regex 에는 정규표현식
Negative search는 입력하는거 빼고 나머지 출력


Continue reading

2019. 1. 6.

[모바일] 드로저 활용한 앱 취약점 점검

[드로저 명령어]

run app.package.list
 - 디바이스에 설치된 모든 앱의 패키지명 출력

run app.package.list -f insecure(설치 앱)
 - 특정단어가 포함되어 있는 패키지명 검색

run app.package.info -a com.android.insecurebankv2
 - 패키지 명으로 앱의 기본적인 정보를 얻기 위한 명령어


 - 패키지의 이름으로 프로세스 정보 버전, 데이터를 저장하는 위치, apk 파일의 위치, UID 등을 알 수 있으며, 앱이 가지고 있는 권한도 확인 할 수 있다.


run app.package.info -p android.permission.SEND_SMS
 -p 옵션을 사용하여 특정 권한을 갖고 있는 패키지의 목록이 출력된다.

 - SEND_SMS 디바이스 패키지 중에서 SMS를 보낼 수 있는 권한을 가진 앱들이 나열된다.

run app.package.manifest
 - 이러한 권한은 AndroidManifest.xml 파일에 정의되어 있으며, 모든 앱의 최상위 폴더에 존재한다. 이 파일은 여러가지 정보를 추출할 수 있기 때문에 기본적으로 분석해야 할 파일이다.

드로저의 기능 중 하나는 앱의 취약한 부분을 검색하는 기능을 갖고 있다는 것이다. app.package.attacksurface 모듈로 가능하다.

run.app.package.attacksurface com.android.insecurebankv2

 - 명령어 결과 5개의 액티비티가 노출되었으며, 브로드캐스트 리시버 취약점, 콘텐츠 프로바이더, 디버깅이 가능한 취약점이 발견되었다.

[취약점 분석]

1) 액티비티 분석

run app.activity.info -a com.android.insecurebankv2


액티비티 정보들의 이름이 출력된다. 그리고 패스워드 변경과 관련된 ChangePassword 를 로그인 후에 접근했을 때와 드로우저를 이용하여 비정상적으로 접근했을때를 비교해보자.

run app.activity.start --component [패키지명] [액티비티명]


 - 특정권한이 있어야만 접근 할 수 있는 페이지를 정당한 권한 없이 접근이 가능하다.

2) 브로드캐스트 리시버 분석

안드로이드 디바이스에서 이벤트가 발생하는 경우에는 앱들이 브로드캐스트 신호를 주고 받으며 시스템상에 일어나는 상황을 공유한다. 이때 신호를 받기 위해서는 브로드캐스트가 정의되어 있어야 하며, 각각의 신호에 맞는 액션 역시 적용되어 있어야 한다.

run app.broadcast.info -f [특정단어]

 - 브로드캐스트 리시버 이름이 MyBroadCastReceiver 라는 것을 알 수 있다.

3) 콘텐츠 프로바이더 분석
콘텐츠 프로바이더는 특정 애플리케이션이 사용하고 있는 데이터베이스를 공유하기 위해 사용된다. 이는 전체 데이터가 아닌 공유를 원하는 데이터만 공유하기 위한 수단이기도 하다.

run.app.provider.info -a com.android.insecurebankv2


TrackUserContentProviderProvider 가 노출된것을 확인하였다. 컨텐츠 프로바이더는 데이터베이스에 있는 정보를 URI 로 공유하기 때문에 데이터베이스에 접근하기 위해서는 URI 에 대한 정보가 반드시 필요하다. 프로바이더가 사용하는 URI 정보를 찾기 위해서는 app.provider.finduri 모듈을 사용한다.

run app.provider.finduri [패키지이름]

 - uri 주소는 특정 데이터에만 접근하도록 제한하여 공유한다.

run scanner.provider.sqltables -uri [uri 주소]
지금까지 얻는 URI 정보로 어떤 정보에 접근할 수 있는 확인한다.

 - 3개의 테이블에 접근할 수 있다. "-a" 옵션을 사용하면 입력한 패키지에서 사용하는 모든 URI 주소 검색을 실시한다. 


run scanner.provider.sqltables -a com.android.insecurebankv2
 - 인시큐어뱅크 앱의 모든 URI를 조사한다.

run app.provider.query [uri]
 - URI 로부터 테이블명까지 추출하고 테이블 안에 어떠한 정보가 저장되어 있는지 확인하기 위해 "app.provider.query" 모듈로 구체적인 정보들을 얻어낸다.
 - URI 정보로부터 로그인한 사용자의 아이디와 로그인한 순서를 나타내는 테이블 정보가 출력되었다.

run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers --projection "* FROM SQLITE_MASTER WHERE type='table';--"


 - 위의 테이블 외에 다른 테이블이 있는지 확인하기 위해 sqlite_master 라는 테이블을 확인해본다. sqlite_master 테이블에서는 현재 앱에서 사용하고 있는 테이블들의 정보를 확인할 수 있다.


- 이러한 작업을 자동으로 수행해주는 scanner.provider.injection 모듈에 대해 알아본다.
- 이 모듈은 특정 앱에서 사용하는 프로바이드를 자동으로 검색하고 sql인젝션 공격이 가능한지 취약한지 여부를 판단한다.




[서비스 분석]
서비스는 앱을 구성하는 4가지 요소 중 하나로 화면에 보이는 액티비티와 반대로 UI가 없으며 백그라운드에서 실행되는 컴포넌트의 종류다. 음악앱의 경우 음악이 재생될 때 다른 앱을 실행하여도 음악이 계속 재생되는것은 음악 재생 서비스가 계속 실행중이기 때문이다.

run app.service.info -a com.android.email

 - email 앱의 서비스 목록이 리스팅된다.

[Debuggable package 분석]
패키지 정보 수집에서 발견된 마지막 취약점이다. 디버깅이 가능하도록 설정되어 있기 때문에 발생하는 취약점으로, 중요한 정보가 노출될 위험이 있다. 액티비티 우회 취약점, 콘텐츠 프로바이더 실행 취약점 등이 이에 해당한다.

run app.package.debugable -f [특정단어]


[모듈 관리]

드로저는 모듈 명령어이기 때문에 다양한 기능을 추가하거나 삭제할 수 있고, 몇 가지 공격 코드도 제공한다. 모듈들은 파이썬으로 작성되었으며, 디바이스에 설치된 드로저 에이전트로 안드로이드 운영체제 안에서 실행할 수 있다. 사용자가 직접 <drozer python path>/drozer/modules  경로에 추가 할 수도 있다.

  • 모듈 제작 관련 공식 홈페이지 (https://github.com/mwrlabs/drozer/wiki/Writing-a-Module)

module search
 - search 명령어로 현재 연결된 공식 저장소로부터 다운로드 할 수 있는 모듈울 검색한다.


module search root
 - 많은 모듈 중에서 사용자가 원하는 기능의 모듈을 찾기 위해 search 명령어를 이용한다.

module search root -d

 - 모듈에 대한 자세한 설명을 얻기 위해 -d 옵션을 이용한다.

module install metall0id.root.cmdclient
 - install 명령어를 이용하여 모듈을 설치한다.

module remote list
 - remote 명령어로 인터넷에 있는 저장소에서 모듈을 검색한다.


module repository command
 - install 명령어로 설치한 모듈 및 인터넷에서 별도로 다운로드한 모듈들이 저장될 위치를 지정하기 위해 사용된다.

참조

  • 드로저 명령어 모음

(http://th3-incognito-guy.blogspot.com/2014/09/drozer-security-attack-framework-for.html)



Continue reading

2019. 1. 3.

2019. 1. 2.

[트러블슈팅] 특정 페이지에 패킷이 잡히지 않을때

문제.
특정 메뉴에 접속하려고 하는데(예를 들어 게시판) proxy 로 잡은 후 forward forward 하면 접속이 안된다.
게시판 페이지가 뜨기 까지 총 3번 요청을 보내야 하는데 , 1번만 요청되고 서버로부터 sessionOK 문자열이 전달되면서 더 이상 요청이 안된다.

즉, 1,2,3 세개 요청을 보내는데 통신 시간을 체크하는것으로 보인다. 때문에 패킷을 잡으면 정해진 통신 시간과 맞지 않기 때문에 통신이 드랍된다.
해결책으로 첫번째 요청과 응답을 아애 인터셉트 안하도록 함으로써 바로 2번째 패킷을 잡는다.

[조치설정]
'요청값 인터셉트 정책 변경'

1) 맨 처음 요청 uri 을 does not match 로 한다.

Proxy > Options > Intercept client requests > add 로 이동

boolean Operator : And
match type : URL
Match Realationship : Does not match
Match condition : 맨처음 요청값 uri

2) 응답값 body 에 찍힌 문자열을 does not match 로 한다.
'응답 인터셉트 정책 변경'

Boolean operator : And
Match type : body
Match relationship : does not match
Match condition : session ok (body에 포함된 문자열) 

Continue reading

2019. 1. 1.

[모바일] drozer 설치

드로저는 모바일 애플리케이션 취약점 진단 프레임워크인 머큐리 새로운 업데이트 버전이다. 윈도우와 리눅스를 지원하며 JRE, JDK, 안드로이드 SDK 가 설치되어 있어야만 사용 할 수 있다.
안드로이드 가상 디바이스 또는 단말기에 에이전트를 설치한 후 PC에서 ADB로 명령을 내리는 서버와 클라이언트 방식으로 동작한다.


드로저는 가상 디바이스 뿐만 아니라 실제 안드로이드 디바이스에서 테스트할 수 있으며, 자동 테스트도 가능하다.


1. 드로저 다운로드 및 실행
https://labs.mwrinfosecurity.com/tools/drozer/


drozer(MSI)와 drozer(Agent.apk only) 를 다운로드 한다.
다운로드한 drozer.msi를 실행하여 설치하고 C:\Python27\Scripts" 경로를 시스템 PATH에 추가한다.


2. Drozer agent 설치


adb install drozer-agent-2.3.4.apk 명령으로 모바일 기기에 Drozer 에이전트를 설치한다.


3. Drozer agent 실행


drozer app을 실행하여 off -> on으로 변경한 후, 포트를 맞춰준다.


adb forward tcp:31415 tcp:31415
drozer.bat console connect  // drozer.bat 파일은 python27/script 폴더에 있다.


** drozer 실행할때 여러가지 에러가 발생하는데 pip 나 easy_install 로 모듈을 설치한다.


4. 실행 결과



참고



Continue reading

Popular Posts

Recent Posts

Powered by Blogger.