M1 – 적절하지 않은 플랫폼 사용

앱 설치시 안정성

 

 

M2 – 취약한 데이터 저장소

M3 – 취약한 통신

중요정보 노출, 암호화 방식

 

M4 – 취약한 인증

 

M5 – 취약한 암호화

메모리값 패킹, 난독화

 

M6 – 취약한 권한 부여

M7 – 취약한 코드 품질

 

 

M8 – 코드 변조

스마트폰 탈옥 Rooting

 

M9 – 리버스 엔지니어링

M10 – 불필요한 기능

과도한 권한 설정

블로그 이미지

iesay

,

출처 : https://stackoverflow.com/questions/44105127/android-studio-3-0-flavor-dimension-issue

Error:All flavors must now belong to a named flavor dimension. The flavor 'armv7' is not assigned to a flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

 

에러

build.gradle(Module App)

 

 

 

블로그 이미지

iesay

,

 

 

- butterknife-7.0.1.jar (com.jakewharton:butterknife:7.0.1)

build.gradle에서

 

default.Config에

javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath = true
}
}

 

코드 추가

 

블로그 이미지

iesay

,
보안취약점 관점에서 안드로이드

 

기존의 OWASP에서 추구하는 웹 취약점 중 몇개만 접목이 가능한것으로 보인다.

일반적인 jsp가 아닌 java .class파일 처럼 배포 한다고 생각 하면 편할것이다.

메모리 오염 취약점은 의미가 없다. java에서 bof, fsb 컴파일 에러나 Out of Memory를 토해내고,  

취약점이 발생한다고 해도 WAS처럼 미들웨어 서버가 없기 떄문에 자기 자신의 스마트폰에 대한 권한만 획득 된다.

루틴과 악성코드 관점에서도 Local exploit이기 때문에 큰 의미가 없다.

안드로이드 App을 진단 할때는 원격에 존재하는 DB서버를 어떻게 털것인가에 대한 부분에 포커스를 맞춰야 된다.

 

1] 세션 예측 취약점

   DB세션을 쓴다고 하여도 사용자에 id/pw에 대한 로그인 인증을 하여야 된다.

  사용자가 많은 APP의 경우 충분히 공격 해볼만 하다.

  (웹 경우 브라우저에 저장되지만 어떻게 저장되고 어떻게 확인하는지는 더   살펴 봐야 되는 부분)

 

2] sql 인젝션

  사용자 입력값에 쿼리 구문을 삽입하여 논리적인 오류를 유발시키는 취약점이다.

  이만큼 허접하게 만든 App은 이제 없지 않을까 싶다.

  나야나같은 경우도 있지만 이제 많이 알려진 취약점 이고 생각보다 개발자들 수준도

  많이 발전 하였다.

 

3] DB connection 정보 활용

 웹과 APP의 가장 큰 차이점은 미들웨어가 존재하냐 존재하지 않느냐 차이이다.

 웹에서는 WAS에서 DB connection정보

호스트, DB계정, DB계정 패스워드, DB Name

저장되어 있지만

 APP에서는 xml형태에 암호화 되어서 클라이언트 배포파일에 저장될 가능성이 높다.

 그래서 그걸 바로 DB에 붙을수도 있지 않을까?

이 부분이 너무 위험해 보인다면 미들웨어 형태 처럼  DB connection 정보를 저장하는 서버를 따로 둘 가능성도 있다.

규모에 따라 다르겠지만 소규모 회사의 App은 충분히 취약점 여부를 파악해 볼만하다.

분석한 정보로 쿼리 분석기 같은 툴로 충분히 찾아낸 접속 정보로 공략 해볼만 하다.

 

4] 파라메터 변조

KT가 털린 방법이다. 사용자 인자값에 다른 사람의 값을 집어 넣는 형태다.

SP 형태로 인자가 바로 쓰여진다면 더 공약하기 쉽다.

 

5] 평문으로 데이터 전송

권한 관리를 제대로 하지 않았다면 평문으로 인자가 전달 된다면 충분히 조작해 볼만하다.

 

4,5번은 큰 차이가 없다.

 

 

원격의 DB서버에 대한 접근 방법에 대해서만 나열해 보았다.

안드로이드는 local공격은 의미 없다.

시큐어코딩으로도 저런 취약점은 찾아내기 힘들것이다.

관련 공부를 더 해보면서 차근 차근 접근해 봐야겠다.

 

1. 세션 타임아웃 설정
2. 로그인 비밀번호 3회이상 틀릴 시 잠금
3. 구간 암호화

 

블로그 이미지

iesay

,

안드로이드 1일차다. 생각보다 설치 하거나

구동 하는데 어려움이 따른다.

 

 Gradle "MyApplication" project refresh failed

C:\User\ABD!!!! (지정된 파일을 찾을수 없습니다)

 

설치 후 아래와 같은 메세지가 보인다면 윈도우 사용자 계정에 !와 같은 특수 문자가 포함된 경우다.

그렇게 되면 SDK경로를 못찾아 들어 간다.

(JAVA_HOME말고 또  로그인계정 홈을 따로 찾는거 같다)

 

요즘은 제어판에서 계정이름 변경을 하여도 폴더 이름은 변경되지 않는다.

새로운 계정을 생성해도 별도의 폴더를 발급 하지도 않는다.

 

재설치를 빨리하는게 정신 건강에 좋다.

해결 하려구 이것 저것 다해 보았으나 결국 재 설치 하였다.

 

그리고 또 하나 삽질한 부분이 있는데 AVD(안드로이드 에물레이터)는 라이젠에서 ARM환경만 실행 된다.

 

처음 설치 했을때 x64버전도 실행되길래 어 되네 했는데

재부팅하니 실행으 안되고 ARM환경을 추가 해야지만 실해이 된다.

아래 블로그를 참고해서 설정을 완료 하였다.

http://why2568.blog.me/221063829927

 

라이젠 1700 

램 16기가

삼성 960 EVO 256기가

생각보다 느리다고 하던데 별로 느린점 못느끼고 메모리 문제도 딱히 없는거 같다.

별도로 Java Heap Size를 변경하거나 그런 설정은 따로 하지 않았다.

 

 

 

블로그 이미지

iesay

,