Native Function 루팅 탐지 기법 우회를 위해 libc 모듈에서 실행되는 메소드를 후킹한다. 앱 리소스 보안을 위해 보안 솔루션을 적용한 경우 java레벨의 난독화와 최소화(mininalize)를 통해 어떤 메소드가 실행되는지 정적 분석을 통해 알 수 없다. 그렇기 때문에 시스템에 더 가까운 Native 함수를 후킹하여 루팅 패키지 검사, 시스템 권한 필요 명령어("su") 실행 등을 후킹한다. 앞선 포스트를 통해 조사한 루팅 탐지 기법은 다음과 같다. Interceptor.attach() Frida 스크립트에서 타켓 바이너리의 특정 함수가 호출되는 시점과 실행 후 반환되는 시점에 후킹을 하려면 Intercetpor.attach()을 통해서 흐름을 보거나 변경할 수 있다. 선언되어 있는 함수에..
루팅(Rooting)? 루팅은 쉽게 말해 시스템 최고 권한(root)을 얻는 것이다. 안드로이드에서는 안정적인 기기의 동작을 보장하기 위해 루트 권한은 일반적인 사용자가 접근하지 못하도록 되어 있다. 시스템 내부 저장소 접근, 권한 변경 등 많은 작업을 수행할 수 있기 때문이다. 하지만 Frida를 이용한 후킹을 위해서는 루팅된 시스템이 필요하며, 이 때 루팅 탐지 기법이 적용된 애플리케이션은 동작이 어려울 수 있다. 슈퍼유저는 특권제어를 할 수 있는데, 앱에 설치된 모든 권한과 시스템 백업, 다른 버전 안드로이드 설치, ROM 컨트롤 등을 할 수 있다. 시스템 안전을 보장할 수 없다. 개인정보인 연락처, 이메일 등에 접근할 수 있고 자격증명 및 비밀번호에도 접근이 가능하다. 루팅 탐지 앱 분석 루팅 탐..
SDN(Software Defined Network) 환경 구성 소프트웨어 정의 네트워크는 트래픽의 제어를 위해 소프트웨어 기반 컨트롤러나 애플리케이션 프로그래밍 인터페이스(API)를 통해 네트워크를 사용하는 방법이다. 기존의 하드웨어 디바이스를 사용하는 것과 차이가 있으며 네트워크 지능화 기능을 담당하는 응용 평면(Application Plane), 운영체제 기능을 담당하는 제어 평면(Control Plane), 데이터 전송을 담당하는 데이터 평면(Data Plane) 세 가지로 구분되고 각 레이어는 다음과 같은 특징을 가지고 있다. 응용 평면은 소프트웨어를 이용하여 네트워크를 제어하는 레이어이다. 네트워크 통계 정보를 활용하여 소프트웨어를 개발할 수 있는 개방형 영역이다. 제어 평면은 전반적인 네트워..
EIGRP(강화 내부 경로 제어 통신) • Cisco사의 IGRP를 기반으로 한 개방형 거리 벡터 라우팅 프로토콜(RFC 7868) • 라우터가 경로 정보를 자동으로 공유하는 동적 라우팅 프로토콜 • 라우터 내 대역폭 및 처리능력의 이용 최적화 • 경로가 변경될 때, 전체 라우팅 테이블을 보내지 않고 토폴로지 변경을 보낸다. • 토폴로지가 변경된 뒤에 일어나는 불안정한 라우팅을 최소화하는데 최적화 • 대역폭, 로드, 지연, 신뢰성, MTU 총 5가지의 메트릭을 사용하여 경로 값 결정 • EIGRP는 라우팅 테이블 및 인접테이블, 토폴로지테이블 총 3개의 테이블을 사용하여 정보를 저장한다. • Unequal Cost 로드밸런싱 지원 RIP이나 OSPF는 메트릭 값이 동일한 최적 경로만 사용해 패킷 경로를 ..
RIP(Routing Information Protocol) 동적 라우팅 - IGP(내부라우팅) - Distance Vector 기반의 RIP 라우팅 프로토콜에 대해 알아본다. • 동적 라우팅 프로토콜 중 경로 결정 방식이 가장 단순함 • 간단한 설정, 모든 라우터에 사용가능 • Metric으로 hop-count 사용 (최대 hop-count 15) RIP v1 • IP주소를 설정할 때 서브넷 마스크 자동 설정 (서브넷팅 사용 불가능) • 라우팅 정보전달에 broadcast 주소 사용 RIP v2 • 같은 클래스안에 있는 네트워크를 서브넷 마스크를 이용하여 구별 • VLSM(Variable Length Subnet Mask) 지원 • 라우팅 정보전달에 Multicast 주소 사용 Distance Vect..
1. 머리말 시프트 레지스터(74HC595)와 7-segemts 모듈을 사용하여 시계를 만드는 과정과 회로, 코드를 소개한다. 2. 사전 연구 시프트 레지스터(shift register)는 데이터를 저장하거나 데이터를 옆으로 이동할 때 사용하는 회로이다. 디지털 시스템에서 시프트 레지스터와 같이 데이터 및 정보를 저장하고 이동하는 기능을 발전시켜 메모리라는 부품이 개발되고 프로세서와 CPU 등이 개발된다. 시프트 레지스터 중 실습에 사용한 74HC595에 대해 데이터 시트를 참고하여 핀번호와 기능에 대해서 알아본다. 1. 74HC595 그림 1은 74HC595의 핀 맵과 로직 다이어그램이다. 시프트 레지스터는 단방향 또는 양방향으로 매 클록마다 한 단씩 이진 정보를 이동시킬 수 있는 레지스터이다. 일련의..
라우팅 프로토콜 구성 1) 라우팅 테이블 패킷을 목적지로 라우팅할 때 참조하는 테이블 목적지 주소, Output I/F, Metric 값 2) Message 라우터 간 라우팅을 위해 교환하는 메시지 이웃 도달 메시지, 라우팅 정보 3) Metric 라우팅 테이블 생성 및 업데이트 시 최적의 경로를 결정 경로길이, 홉(Hop) 수, 대역폭, 비용, 신뢰성 라우팅 프로토콜 중 동적 라우팅 - IGP - Link State Vector - OSPF 프로토콜에 대해 알아보고, 실습해본다. OSPF(Open Shortest Path First) 라우터가 목적지 경로를 SPF(Shortest Path First) 알고리즘을 통해 모든 라우팅 테이블에 기록 “소요비용(Cost)”이 가장 작은 경로를 최적의 경로를 선..
IPv4 vs IPv6 등장배경 •현재 사용중인 인터넷 프로토콜인 IPv4(Internet Protocol Version 4)는 광범위한 네트워크의 사용을 예측하지 못하던 시대에 등장 •IPv4 – 이론 상 42억여개의 인터넷 주소 지원 –But, 부족하다. 비교 IPv4 IPv6 주소 체계 32bit 128bit 주소 개수 2^32(약 42억 개) 2^128(약 3.4x10^38 개) 패킷 헤더 가변적 고정적(40 옥텟) 주소 할당 방법 A, B, C, D(멀티캐스트) 클래스 CIDR CIDR 기반 계층적 할당 주소 유형 유니캐스트(unicast) 멀티캐스트(multicast) 브로드캐스트(broadcast) 유니캐스트(link-local address, site-local address, global..
Request Smuggling 불특정 다수의 사용자로부터 받은 HTTP 요청을 프록시와 웹서버가 처리하는 과정에서 사용자가 요청한 HTTP 패킷을 조작할 수 있는 공격이다. 웹서버는 클라이언트의 요청을 직접 처리하는 것이 아니라 메인서버의 과부하를 방지하기 위해 LB나 리버시 프록시 등 중간에서 요청을 처리하여 전달한다. 이 과정에서 HTTP/1.1에서는 여러개의 요청을 연속적으로 전달할 수 있도록 지원하는데 패킷을 받아 처리하는 과정에서 Content-Length, Transfer-Encoding 에 대한 처리를 서로 다르게 하여 패킷의 시작과 끝부분을 다르게 해석하는 문제가 발생한다. CL.CL 여러 Content-Length 헤더가 존재하거나 유효하지 않은 값일 경우 400 상태 코드로 응답해야한..
안드로이드 설치 파일(APK) 역공학 환경 구성 gomguk.tistory.com/16에서 작성한 앱을 역공학으로 분석해보고 동시에 apk 구조에 대한 학습 다운로드 및 설치 APK Tool(apk → smali) https://ibotpeaches.github.io/Apktool/ java 1.8 버전 이상 필요 java -version apktool -v 설치확인 Dex2Jar(dex → jar) https://sourceforge.net/projects/dex2jar/ brew로도 설치 가능 brew install dex2jar 디컴파일 d2j-dex2jar [apk파일명] JD-GUI (jar → java) http://jd.benow.ca/ 위 방법으로 분석이 안될 때 바이트 코드 뷰어나 Jad..