반응형

모의해킹을 수행할 때 많은 툴을 사용한다.

 

특히 jar 파일 등을 사용할 때 툴들이 java 버전을 타는 경우가 있다.

 

따라서 한 PC에서 여러개의 버전을 돌려야 할 때가 있는데 다음과 같이 설정해주면 2개 이상 편하게 사용할 수 있다.

 

먼저 자바를 설치 한다음 C 드라이브 밑에 C:\java_env에 만들어 주었다.

 

그 후에 아래와 같은 bat 파일을 만들어준다.

 

@echo off
set JAVA_HOME=C:\Program Files\Java\jre1.8.0_201
set PATH=%JAVA_HOME%\bin;%PATH% 
java -version

 

그 후 위의 파일을 java8.bat이라는 파일로 저장해준다.

 

그 후 cmd 창에 java8이라고 입력하면 java 버전이 8되고 java11로 입력하면 11버전으로 실행이 가능하다.

 

 

반응형
반응형

갑자기 분석하고 싶은 앱이 있어 앱을 분석하고 리패키징을 하였다.

 

근데 아래와 같은 에러가 났다.

 

.....
생략
.....

[0m java.lang.RuntimeException: Unable to start activity ComponentInfo{../..}: android.content.res.Resources$NotFoundException: Resource ID .... ]


.....
생략
.....

[0m java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "../base.apk"],nativeLibraryDirectories=[/data/app/com./.../lib/arm64, /system/lib64, /vendor/lib64]]] couldn't find "something.so"

 

처음보는 에러였다.

 

그래서 열심히 구글링을 해본결과 앱스토어에서 xapk 형식으로 다운을받았는데

 

이걸 그대로 apktool을 이용해서 pull로 가져오니 위의 에러가 난것이다. 

 

xapk 형식이 아닌 apk로 가져오니 해당 에러가 해결되었다.

 

xapk 형식은 알고는 있었지만 이번 기회에 공부를 해봐야겟다.

반응형
반응형

연락은 댓글로!!

반응형

반응형

안드로이드 애플리케이션에 대해 취약점 분석 및 모의해킹을 진행 시 Frida는 필수이다.

 

먼저 AndroidFrida를 설치하고 실행 하기 위해서는 PC에서 후킹 스크립트를 작성해야한다.

 

따라서 PC와 모바일 둘 다 Frida를 실행 할 수 있는 환경을 만들어주어야 한다.

 

PC 환경은 이전 포스팅을 보고 환경을 만들어 주자. (클릭)

 

먼저 진단용 단말기는 루팅이 진행되어야한다.

 

루팅과 관련된 내용은 따로 정리할지는 모르겠지만 검색만 하면 다른 포스팅이 많이 있다.

 

참고하자.

 

루팅된 폰에 다음과 같은 명령어를 입력하고 단말기가 32bit인지 64bit인지 확인한다.

 

getprop ro.product.cpu.abi

 

 

arm64-v8a는 64bit이기 때문에 frida 홈페이지에 가서 다운로드 받고 단말기에 넣어주기만 하면 끝이다.

 

Frida 공식 홈페이지는 다음과 같다. (클릭)

 

 

PC에 설치한 frida 버전과 똑같은 버전을 다운로드 받아 준다.

 

다운로드 받은 후 단말기에 해당 frida-server 파일을 넣어주고 실행 할 수 있는 퍼미션을 준다.

 

 

반응형

'모바일 해킹 > AoS' 카테고리의 다른 글

[UnCrackable AoS] Level 1  (0) 2022.03.23
[Android] NDK란??  (0) 2022.03.09
Byte Code & Binary Code  (2) 2021.11.09
Android Penetration Testing - Rooting (Galaxy S6)  (5) 2021.08.27
Android Penetration Testing - Setup  (2) 2021.01.11
반응형

모바일 모의해킹 및 취약점 분석 시 frida는 많이 사용된다.

 

따라서 이번에는 Anaconda에서 frida를 설치해보자.

 

먼저 Anaconda 설치는 이전 포스팅을 참고하면 된다. (클릭)

 

 

먼저 Anaconda에서 python을 실행 시켜준다.

 

그 후 다음 명령어를 입력해서 frida를 PC에 설치해주자.

 

pip install frida-tools

 

 

이렇게 설치해주면 PC에 frida가 설치되었다.

 

 

하지만 frida 설치 후 버전 확인 또는 frida를 실행 하였을 때

 

아래의 같이 오류가 난다면 python 버전의 문제이다.

 

***
Failed to load the Frida native extension: DLL load failed: 지정된 모듈을 찾을 수 없습니다.
Please ensure that the extension was compiled for Python 3.x.
***

......

ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다.

 

해결 방법은 python 3.7 버전으로 다시 설치하면 된다.

 

 

반응형
반응형

 

갑자기 논문을 읽다가 평소와는 다르게 bytecode라는 단어를 보고

 

평소 같았으면 그냥 아 bytecode 하고 넘어갔지만

 

오늘 갑자기 bytecode??, binary code랑 뭐가 다른거지? 하고 어느 순간에 두개의 개념이 헷갈렸다.

 

따라서 이번에는 바이트 코드(Byte Code)바이너리 코드(Binary Code)를 짧게 정리해보고자 한다.

 

모든 언어를 예를 들거나 할때 등장하는 언어가 있다.

 

바로 C언어이다.

 

C언어는 컴파일러에 의해 소스파일(e.g., main.c, test.c)

 

오브젝트 파일(main.obj, test.obj)로 만들어진다. 

 

오브젝트 파일로 변환될때 0과 1로 이루어진 이진 코드

 

바이너리 파일로 변환된다.

 

0과 1로 이루어진 파일이기 때문에 컴퓨터는 해당 파일을 이해는 할 수 있다.

 

다만 실행은 못한다.

 

컴퓨터가 실행을 하기 위해서는 기계어(명령어 집합)가 되어야한다.

 

또한 C언어는 환경에 종속적이다.

 

이러한 문제점을 해결하고자 나온 언어가 자바(Java)이다.

 

자바는 컴파일러에 의해 소스파일(e.g., main.java)오브젝트 파일(e.g., main.class)로 변환되며

 

바이너리 코드가 아닌 바로 바이트 코드로 변환된다.

 

또한 환경에 독립적이며 바로 실행 할수 있다.

 

둘다 똑같이 컴파일러에 의해 소스파일컴파일 되었고

 

컴파일 된 파일 오브젝트 파일되었는데

 

C언어에서는 바이너리 코드, Java에서는 왜 바이트 코드일까?

 

완벽한 정답은 아니지만 두개의 차이점은 바로 실행 할 수 있냐 없냐의 차이이다.

 

차이점을 알아보자.

바이너리 코드

  • 컴퓨터가 인식하고 이해할 수 있는 이진 숫자 체계의 0과 1로 구성된 코드를 의미한다.

기계어

  • 기계어는 CPU가 직접 해독하고 실행할 수 있는 비트 단위로 쓰인 컴퓨터 언어를 통틀어 일컫는다.
  • 기계어는 프로그램을 나타내는 가장 낮은 단계의 개념이다.
  • 기계어는 어셈블리어와 1 : 1로 쓰일 수 있다.

바이트 코드

  • 가상 머신에서 이해하고 실행 할 수 있는 0과 1로 구성된 코드이다.
  • 어떠한 환경에 종속적이지 않고 실행 될  수 있는 가상 머신용 기계어 코드이다.

 

나름 바이너리 코드바이트 코드의 차이를 간단하게 정리를 해보았다.

 

위의 논문에서도 바이너리 코드라고 하지 않고

 

바이트 코드라고 쓰여져있었던것이다. (안드로이드 관련 논문)

 

왜냐? 안드로이드에서 사용하는 애플리케이션(App)은 Java로 만들어졌기 때문이다.

 

 

 

 

반응형

'모바일 해킹 > AoS' 카테고리의 다른 글

[Android] NDK란??  (0) 2022.03.09
[Android] Frida 설치  (0) 2022.01.23
Android Penetration Testing - Rooting (Galaxy S6)  (5) 2021.08.27
Android Penetration Testing - Setup  (2) 2021.01.11
Android Penetration Testing - Introduction  (0) 2021.01.11
반응형

1. 문제 설명

 

문제를 클릭해보자.

 

클릭하면 화면에 javascript challenge라는 문구 말고는 아무것도 없다.

 

쿠키값을 봤을때도 아무것도 없어 페이지 소스보기를 눌러보았다.

 

페이지 소스를 봤을때 딱히 다른건 없었지만 <script> 태그에 이상한 이모티콘이 존재했다.

 

따라서 뭔가 이번 문제는 <script> 태그에 난독화 되어 있는 코드를

 

복호화하는것이 우선일 것이라는 생각이 들었다.

 

따라서 구글에 다음과 같이 입력해보았다.

 

 

검색을 해보니 제일 위에 aaencode라는 것이 나온다.

 

클릭해보자.

 

 

클릭해 보니 alert("Hello, JavaScript")이 위의 이모티콘과 같다고 한다.

 

브라우저 콘솔에 넣어보자.

콘솔에 넣고 입력해보니 바로 alert가 떴다.

 

따라서 이번 문제를 풀기 위해 사이트에서 소개하는 Decoder-aaEncode에 접속해보자.

 

Githtml 파일로 decoder가 있다.

 

다운로드 받아 보니 Input the aaencode here난독화된 코드를 넣으면

 

Decoded aaencode String복호화된 코드가 나온다. 

 

복호화 된 코드는 다음과 같다.

 

var enco='';
var enco2=126;
var enco3=33;
var ck=document.URL.substr(document.URL.indexOf('='));
for(i=1;i<122;i++)
{
  enco=enco+String.fromCharCode(i,0);
}
function enco_(x)
{
  return enco.charCodeAt(x);
}
if(ck=="="+String.fromCharCode(enco_(240))+String.fromCharCode(enco_(220))+String.fromCharCode(enco_(232))+String.fromCharCode(enco_(192))+String.fromCharCode(enco_(226))+String.fromCharCode(enco_(200))+String.fromCharCode(enco_(204))+String.fromCharCode(enco_(222-2))+String.fromCharCode(enco_(198))+"~~~~~~"+String.fromCharCode(enco2)+String.fromCharCode(enco3))
{
  location.href="./"+ck.replace("=","")+".php";
}

 

이제 위의 코드를 보면 제일 마지막에

 

location.href로 문제에서 원하는 php 페이지로 가는것이 목적인것같다.

 

2. 문제 풀이

 

먼저 위의 복호화된 코드를 브라우저 콘솔 창에 넣고 어떤 값이 리턴되는지 보자.

 

먼저 문제에서 최종적으로 원하는 것은 원하는 php 사이트로 가는것이다.

 

마지막 if문을 살펴보면 ck라는 변수가

 

=+String.fromCharCode(enco_(240))+String.fromCharCode(enco_(220))...

 

완성된 문자열같아야한다.

 

여기서 + 는 문자나 문자열을 이어주는 역할을 한다.

 

따라서 String.fromCharCode(enco_(240))를 알기 위해서는 enco_라는 함수를 먼저 선언해주어야하며

 

enco_ 함수내에 enco.charCodeAt(x)라는 것을 실행하기 위해서는 enco를 먼저 선언해주어야한다.

 

선언 한 다음 String.fromCharCode(enco_(240))를 실행해보자.

 

y가 나온다.

 

남은것도 다해보면 youaregod~~~~~~~!이라는 문장이 나온다.

 

 

마지막 코드 if문안에 ck라는 변수에 선언해주고 replace로 해주는데

 

콘솔창에서 해보면 다음과 같이 나온다.

하지만 replace가 되려면 =가 ck라는 변수에 존재해야하고,

 

ck라는 변수는 다음과 같이 정의되어 있다.

 

var ck=document.URL.substr(document.URL.indexOf('='));

 

따라서 URL에 12번URL/?=youaregod~~~~~~~!가 들어가야한다.

 

접속해보자.

 

 

 

반응형

'웹 해킹 > Webhacking.kr' 카테고리의 다른 글

11. old-11  (0) 2021.11.09
10. old-10  (0) 2021.11.08
9. old-09  (0) 2021.11.08
8. old-08  (0) 2021.11.05
7. old-07  (0) 2021.11.04

+ Recent posts