SSH 터미널을 접근할 때 난 putty를 주로 쓰는 편이지만 mobaxterm도 괜찮으니 써볼까 함.

 

우선 일전에 iOS 탈옥 후 몇 가지 설치해야 할 트윅에 관해 말했음.

 

먼저 SSH 터미널을 연결하기 전 usb 터널 연결을 해주는 게 좋음.

 

개인적으로 ifunbox를 쓰고 있으나 더 쉬운 방법도 마지막에 보여줄 예정임.

ifunbox를 다운받아 아이폰을 연결하면 정상적으로 연결됨.

하지만 openssh 트윅이 설치되지 않았으면 연결되지 않을 수 있음.

이렇게 바로 연결되는 경우도 있지만 안 되는 경우 터미널 포트에 22를 넣으면 됨.

(연결을 자동으로 쓴 지 오래돼서 가물가물 하나 127.0.0.1:22, 127.0.0.1:2222, 22 세 가지 중 하나를 넣으면 됐음.)

 

저렇게 하면 연결 준비는 다 한 거임.

 

모든 아이폰의 root 비밀번호는 alpine임.

ID : root

PW : alpine

 

그럼 ssh연결을 해보겠음.

 

1. putty

putty를 처음 연결하면 저런 창이 뜨는데 Host Name에 127.0.0.1, Port에 22를 넣고 Open을 누르면 됨.

이런 창이 뜨는데 전에 얘기한 root/alpine을 넣으면 됨.

 

2. mobaxterm

처음 켜면 이런 창이 뜰 텐데 Session을 누르면 됨.

이렇게 뜨면 SSH를 누른 후 Remote host에 127.0.0.1을 넣은 후 OK 클릭!

그럼 이런 화면이 보일 텐데 전과 마찬가지로 root/alpine으로 로그인해주면 됨.

로그인하면 처음에 패스워드를 저장할 거냐 물어보는데 편의에 따라 진행.

 

3. 3utools

개인적으로 이게 가장 쉬웠음.

 

Toolbox에서 Find tool에 Open SSH Tunnel을 검색.

그럼 이렇게 뜨는데 아래 있는 Open SSH Tunnel을 눌러주면 바로 연결됨.

이런 게 뜨면 SSH Client를 눌러주면 되는데 아이디와 비밀번호가 Default로 입력되어 있어서 따로 입력할 필요가 없음.

그럼 3utools가 알아서 putty로 연결해줌.

 

4. Openssh

 

윈도우에서 이 방법을 선호하는 사람을 많이 보진 못함.

하지만 나는 CLI환경에서 Openssh 가장 유용하게 사용하고 있음.

 

$ ssh [USER]@[HOSTNAME] -p [PORT]

 

아이폰을 예로 명령어를 써주면

 

$ ssh root@127.0.0.1 -p 22

 

위와 같이 입력해서 접근할 수 있음.

 

설치방법은  CentOS 7 은

 

yum install openssh-server openssh-clients openssh-askpass

 

위 명령어로 설치할 수 있는데 Linux에 따라서 sudo apt-get이 있으며

 

Windows는 설정 -> 앱 -> 선택적 기능 관리 -> 기능 추가 -> OpenSSH로 설치 가능함.

 

끝!

 

'IOS' 카테고리의 다른 글

Application decrypt & extraction  (0) 2022.02.17
sftp 연결  (0) 2022.02.15
cycript 설치 및 사용  (0) 2022.02.14
jailbreak 후 도움되는 트윅  (0) 2022.02.14
burpsuite 연결  (0) 2022.02.10

개인적으로 뷰 조작을 할 때 많이 쓰긴 하지만 이 외에도 사용 방법이 많음.

전부 다 쓸 순 없지만 링크라도 잘아서 설명하겠음.

 

1. 설치

iOS 버전이 올라가면서 10 버전 이후로 cycript사용이 잘 안됬음.

그래서 cycript를 사용할 수 있는 다른 방법을 찾아 사용 중임.

난 iOS 12.5.4(iphone6)를 사용하고 있는데 다른 버전은 될지 잘 모르겠음.

 

i) Cydia에서 New curses, readline, adv-cmds 설치

New Curses : https://en.wikipedia.org/wiki/Ncurses

 

ncurses - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Text-based user interface API ncurses (new curses) is a programming library providing an application programming interface (API) that allows the programmer to write text-based user int

en.wikipedia.org

뭔가 맞아 보이는지는 잘 모르겠는데 substrate로 귀속되는 라이브러리로 터미널에서 GUI를 만들 수 있게 해주는 것 같긴 함.

확실한 건 터미널과 관련한 기능들이 있는 라이브러리 기는 함.

readline : 입력한 명령줄을 편집할 수 있도록 하는 응용 프로그램에서 사용할 기능 세트를 제공함. Emacs, vi 등을 사용할 수 있음.

adv-cmds : 아이폰에서 터미널을 사용할 수 있게 해 줌.

 

ii) ssh 연결하여 명령어 실행

위부터 순서대로 해주면 됨

wget http://apt.saurik.com/debs/cycript_0.9.594_iphoneos-arm.deb                                                

wget http://www.tateu.net/repo/files/net.tateu.cycriptlistenertweak_1.0.0_iphoneos-arm.deb

wget http://www.tateu.net/repo/files/net.tateu.cyrun_1.0.5_iphoneos-arm.deb

dpkg -i cycript_0.9.594_iphoneos-arm.deb

dpkg -i net.tateu.cycriptlistenertweak_1.0.0_iphoneos-arm.deb net.tateu.cyrun_1.0.5_iphoneos-arm.deb

cyrun -n SpringBoard -e

 

이렇게 하면 설치가 되는데 오류가 나는 경우가 있음. 이럴 때 마지막에 실행해준 cyrun -n SpringBoard -e를 꺼주면 되는데 kill을 사용해도 되고 cycript가 실행 중인 경우도 있으므로 확인하여 꺼주면 대부분 됨.

 

2. 사용방법

 

i) 실행

cyrun -n (아이폰에서 보이는 앱 이름) -e -d

cyrun -d (앱 번들 ID) -e -d

cycript -p (프로세스 번호)

 

프로세스 번호 같은 경우는 실행 중인 경우에만 사용이 가능함.

 

ii) 사용

사용방법은 이미 여러 곳에서 나와있지만 몇 가지 복붙해서 먼저 올려보겠음. (설명 생략)

- Bundle ID, Bundle DisplayName, Bundle ExecutableName 확인

NSBundle.mainBundle.infoDictionary.allKeys()

NSBundle.mainBundle.infoDictionary.CFBundleName

NSBundle.mainBundle.infoDictionary.CFBundleIdentifier

NSBundle.mainBundle.infoDictionary.CFBundleDisplayName

 

- View 계층 확인

UIApp.keyWindow.rootViewController    // root view controller 확인

UIApp.keyWindow.rootViewController._printHierachy().toString()

UIApp.keyWindow._autolayoutTrace.toString()    // simplified recursiveDescription

 

- subviews 확인

UIApp.keyWindow.subviews()    // keyWindow의 subviews 확인. 아래 예시는 #으로 구분되는 2개의 subviews를 가지고 있음

#주소.subviews()    // 특정 주소 값을 가지는 view의 subviews 확인. 아래 예시는 #으로 구분되는 1개의 subview를 가지고 있음

UIApp.keyWindow.subvies()[index]._viewDelegate()    // 해당 뷰를 담당하는 controller 출력. 아래 예시는 keyWindow의 첫 번째 subview를 담당하는 controller가 UIApplicationRotationFollowingController 임을 나타냄.

 

- 상태 표시줄 숨기기 / 표시하기(안 되는 경우가 많음)

[[UIApplication SharedApplication] setStatusBarHidden:YES]

[[UIApplication SharedApplication] setStatusBarHidden:NO]

 

- 아이콘 badge number 조작(안 되는 경우가 많음)

var a = [UIApplication sharedApplication]

[a setApplicationIconBadgeNumber:100];

 

- Print Methods

(1) printMethods 함수 만들어서 수행

// Usage:
// for InstanceMethods: printMethods('className')
// for ClassMethods: printMethods('className', true)
function printMethods(className, isa) {
  var count = new new Type("I");
  var classObj = (isa != undefined) ? objc_getClass(className)->isa :
  objc_getClass(className);
  var methods = class_copyMethodList(classObj, count);
  var methodsArray = [];
  for(var i = 0; i < *count; i++) {
  var method = methods[i];
  methodsArray.push({selector:method_getName(method),
  implementation:method_getImplementation(method)});
  }
  free(methods);
  return methodsArray;
}

==> 실행결과(DVIA-v2 앱에 대해서 test)

출력된 결과는 보기 힘드니, Online Javascript Beautifier를 활용(ex.  https://beautifier.io/).

 

(2) _methodDescription() 메서드 활용

UIApp.keyWindow.rootViewController._printHierachy() 명령어로 뷰 계층 확인 후 관심 클래스의 주소 값에 대하여 다음 명령어 수행

#<주소 값>._methodDescription(). toString()    // 이 방법의 경우 알고자 하는 클래스의 method 뿐만 아니라 다른 클래스의 메서드들도 출력해주다 보니 쓸모없는 정보들이 너무 많이 출력됨

 

 

- Print Current ViewController

function currentVC() {
  var app = [UIApplication sharedApplication]
  var keyWindow = app.keyWindow
  var rootController = keyWindow.rootViewController
  var visibleController = rootController.visibleViewController
  if (!visibleController){
  return rootController
  }
  return visibleController.childViewControllers[0]
}

==> 실행결과

복붙 : https://hackcatml.tistory.com/52

 

Cycript(iOS 12.4)

cyrun을 이용하면 ios 12에서도 cycript 사용이 가능. - Cycript 및 Cyrun 설치 및 구동 wget http://apt.saurik.com/debs/cycript_0.9.594_iphoneos-arm.deb wget http://www.tateu.net/repo/files/net.tateu.cyc..

hackcatml.tistory.com

 

개인적 hackcatml 사이트에서 많이 보고 공부했었음.

정말 저분 respect 함

문제 시 해당 내용 바로 삭제하겠습니다. 

 

무튼 저런 기법 말고 간단히 뷰 조작을 하고 싶은 사람도 많을 거임.

 

[UIApp.keyWindow.subviews()[1] removeFromSuperview]
[UIApp.keyWindow setHidden:YES] 

 

cycript 실행 후 위의 두 가지 명령어로 superview와 hiddenview를 제거하고 사용할 수 있음.

탈옥이 된 단말기에서 탐지를 했으나 view를 내리고 사용할 수 있다면 그것도 탈옥 우회 중 하나임.

 

여러 방법이 있고 이게 주로 쓰인다 말하기는 어렵겠지만 제가 진단 시에 자주 사용하는 방법임.

 

끝!

 

 

'IOS' 카테고리의 다른 글

sftp 연결  (0) 2022.02.15
SSH 터미널 접근 방법  (1) 2022.02.15
jailbreak 후 도움되는 트윅  (0) 2022.02.14
burpsuite 연결  (0) 2022.02.10
fiddler 연결  (0) 2022.02.10

jailbreak가 끝나고 나면 어떤 걸 깔아서 진단해야 할지 뭐가 유용한지 모르는 사람들이 많음.

일단 탈옥은 했는데 활용할 수가 없다면 굳이 할 필요가 없음.

그래서 개인적으로 많이 사용하는 트윅을 간단하게 써볼까 함.

웹뷰형식의 앱은 앱 자체 취약점 진단 시에만 탈옥된 아이폰이 필요한데 모바일 웹 취약점을 굳이 탈옥해서 진행할 필요는 없음.(단, SSL Pinning 우회가 필요한 경우는 다를 수 있음 그리고 꼭 그렇다는 것도 아님. 무튼 아님.)

 

1. Apple File conduit "2"

ifunbox로 내부 파일을 접근할 수 있도록 해주는 트윅임. WinSCP를 통해 연결할 수 있는 방법도 있지만 ifunbox를 유용하게 쓴다면 거의 필수적으로 잘 쓸 수 있는 트윅임.

 

2. Openssh

아이폰을 ssh로 연결할 수 있도록 해주는 트윅임. putty로 연결해서 자주 사용함. mobaxterm을 이용하는 것도 추천.

 

3. Frida

소스를 추가해야함.(https://build.frida.re)

frida는 Android와 iOS에서 많이 쓰이는 툴임. 물론 알겠지만 hooking이나 jailbreak 우회 및 ssl pinning 우회 등 여러 방면에서 많이 쓰임. frida codeshare(https://codeshare.frida.re/) <--------- 여기에서 참조해서 하거나 직접 코딩하는 경우도 많음. (Android에서 많이 쓰긴 함.)

 

4. classdump

class명과 구조를 알기 위해 사용하는 분석용 툴. 대부분 SSH를 연결하여 사용함.

ios13 이후로는 잘 안 되는 경우가 많은데 https://github.com/DreamDevLost/classdumpios/releases에서 deb파일을 다운로드해 안으로 옮긴 후에 (dpkg -i deb파일)<------- 이렇게 설치해주면 어느 정도 돌아가긴 함.

앱을 decompile 해서 보는 걸 추천함.

 

5. filza file manager

파일 관리 및 수정 등을 할 때 쓰는 트윅. 앱 내부 파일이나 구조 파악에 유용함.

 

6. flex3 beta

소스를 추가해야 함.(https://getdelta.co/)

개인적으로 iOS 앱 진단 시에 가장 편하게 쓰는 트윅임. method 찾아 반환 값을 임의로 변경시켜줄 때 많이 사용함.

탈옥 우회 및 위변조 탐지 우회 등을 할 때 주로 쓰임.

 

7. app sync unified

소스를 추가해야 함.(http://cydia.angelxwind.net)

인가되지 않은 IPA설치 시에 쓰임. 앱 다운그레이드 테스트할 때도 유용하게 쓰임.

 

8. cydia substrate

기본 트윅임. 트윅을 설치하고 사용하면 기본 앱 등 앱들의 class를 hooking 하거나 method들을 만들거나 변조하는데 이런 hooking 및 변조된 class와 method를 실행할 수 있도록 해주는 트윅임.

 

9. wget

ssh연결 후에 필요한 파일이나 git을 불러서 사용할 때 유용하게 쓰임.

 

10. crackerXI+

앱 설치 후 crack 및 리패키징할 때 많이 쓰임. 외부로 sftp툴을 이용해 빼온 뒤 분석할 때 필요한 툴. 전에는 clutch를 많이 썼었음. clutch 설치 방법이라고 하는데 나중에 해볼 생각임. (https://nightohl.tistory.com/entry/ios%EC%95%B1%EB%B6%84%EC%84%9D-%ED%88%B4-Clutch-%EC%84%A4%EC%B9%98-ios13) 이외에 Dumpdecrypted, Frida-ios-dump, bfdecrypted 등도 꾸준히 해볼 생각임.

 

11. cycript

javascript와 obj-C를 결합한 인터프리터인데 편하고 쓰기 좋음.

탈옥 우회 및 뷰 조작 시에 많이 쓰는데 잘 쓰고 있음.

iOS 버전이 올라가면서 사용 못하는 줄 아는 사람이 많은데 차후 업로드할 예정임.

 

이 외에도 사용하는 트윅이 많으나 이 정도가 기본적으로 쓰는 트윅들임.

 

끝!

'IOS' 카테고리의 다른 글

SSH 터미널 접근 방법  (1) 2022.02.15
cycript 설치 및 사용  (0) 2022.02.14
burpsuite 연결  (0) 2022.02.10
fiddler 연결  (0) 2022.02.10
jailbreak  (0) 2022.02.09

이전 fiddler와 마찬가지로 연결 후에 인증서를 설치하는 방향으로 진행하려고 함.

burpsuite에서 처음 보면 127.0.0.1:8080으로 설정되어 있음.

로컬(127.0.0.1)을 연결하므로 그냥 진행해도 괜찮지만 프록시 설정을 해줄 예정임.

cmd(명령 프롬프트)에서 ip를 확인해줌.

wifi를 확인해 주면 됌.

이건 임의로 해준 거지만 ipconfig로 확인한 ip와 버프 슈트 ip, 프록시 설정의 ip를 통일해주면 우선 컴퓨터 내 파라미터를 캡처할 수 있음.

 

여기에서 fiddler에서와 같이 아이폰의 프록시도 통일시켜주면 아이폰의 파라미터도 캡처할 수 있음.

 

하지만 전과 같이 HTTPS 캡처는 어려울 수 있음.

인증서를 설치해주기로 함.

프록시 연결이 된 후 http://burp/ 로 접근하면 위와 같은 페이지가 뜸.

우측 상단에 CA Certificate를 누르면 인증서를 설치할 수 있음.

위의 설치를 누르면 인증서 설치가 완료됨.

 

끝!

 

'IOS' 카테고리의 다른 글

SSH 터미널 접근 방법  (1) 2022.02.15
cycript 설치 및 사용  (0) 2022.02.14
jailbreak 후 도움되는 트윅  (0) 2022.02.14
fiddler 연결  (0) 2022.02.10
jailbreak  (0) 2022.02.09

+ Recent posts