본문 바로가기

Security Study

(19)
[InsecureBankv2] 취약한 암호화 실행 취약점 개요취약점 설명암호화 알고리즘에 대한 취약점으로, 중요 데이터 전송시 취약한 암호화 알고리즘을 이용하는 것을 의미한다. 취약한 알고리즘으로는 RC2, RC4, RC5, MD4, MD5, SHA1, DES, 3DES 등이 있다.보안 위협키값을 소지하지 않으므로 공격자가 똑같은 데이터를 만들고 변조가 가능하다.발생 위치LoginActivity.java 취약점 진단 과정Step 1) LoginActivity.java 확인username, password에 각각 아이디와 패스워드를 받아 저장한다. 아래의 if문을 보면, username은 Base64로 인코딩하여 저장하고, password는 aes 암호화를 진행하는 것을 확인할 수 있다. Base64는 암호화가 아니라 인코딩이므로, 쉽게 원래의 값을 알 ..
[Dreamhack] Shellcode Exploit Tech: Shellcode0.1. 셸코드익스플로잇을 위해 제작된 어셈블리 코드 조각셸을 획득하기 위한 목적으로 셸코드를 사용해서 “셸”이 접두사로 붙음셸을 획득하는 것은 시스템 해킹의 관점에서 매우 중요해커가 rip를 자신이 작성한 셸코드로 옮길 수 있으면 해커는 원하는 어셈블리 코드가 실행되게 할 수 있음어셈블리어는 기계어와 거의 일대일 대응되므로 사실상 원하는 모든 명령을 CPU에 내릴 수 있게 됨셸코드는 어셈블리어로 구성되므로 공격을 수행할 대상 아키텍처와 운영체제에 따라, 셸코드의 목적에 따라 다르게 작성됨아키텍처별로 자주 사용되는 셸코드를 모아서 공유하는 사이트가 있지만 공유되는 셸코드는 범용적으로 작성된 것이기 때문에 실행될 때의 메모리 상태 같은 시스템 환경을 완전히 반영하지..
[Dreamhack] File Vulnerability ServerSide: File Vulnerability1. File Upload Vulnerability1.1. Path Traversal파일 업로드 취약점(File Upload Vulnerability)웹 서비스를 통해 이용자의 파일을 서버의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점이용자가 업로드 될 파일의 이름을 임의로 정할 수 있을 때 발생크게 Path Traversal과 악성 파일 업로드로 분류파일 업로드를 허용하는 대개의 서비스는 보안을 위해 특정 디렉토리에만 업로드를 허용제한이 없다면 악의적인 이용자가 웹 서버의 소스 코드나 서버에 있는 중요 시스템 파일을 덮어 쓸 위험이 있음Path Traversal업로드에 존재하는 제약을 우회하여 임의 디렉토리에 파일을 업로드할 수 있는 취약..
[InsecureBankv2] 안전하지 않은 웹 뷰 취약점 개요취약점 설명웹 뷰는 네이티브 앱에 내재되어 있는 웹 브라우저로, 일반 웹 브라우저와 달리 주소창, 새로고침, 즐겨찾기와 같은 기능은 없고 단순히 웹페이지만 보여줄 수 있다. 웹 뷰에서 자바스크립트 코드가 강제로 실행되게 함으로써 다른 사용자의 중요 정보를 탈취하는 취약점이다.보안 위협사용자가 의도하지 않은 스크립트를 실행하도록 하여 정보 탈취 등의 행위가 가능하다.발생 위치ViewStatement.java 취약점 진단 과정수동Step 1) ViewStatement.java 확인ViewStatement 액티비티에서 웹 뷰가 사용되는 것을 확인할 수 있다. 웹 뷰의 객체를 선언한 후, 접근할 파일 경로를 설정한다.if (fileToCheck.exists()) { //Toast.makeText(th..
[Dreamhack] Tool Tool: gdb버그(bug): 실수로 발생한 프로그램의 결함디버거(Debugger): 완성된 코드에서 버그를 찾는 도구1. gdb & pwndbg1.1. gdb리눅스의 대표적인 디버거오픈 소스로 개발되어 무료로 설치 가능다양한 플러그인들이 개발1.2. 실습 예제// Name: debugee.c// Compile: gcc -o debugee debugee.c -no-pie#include int main(void) { int sum = 0; int val1 = 1; int val2 = 2; sum = val1 + val2; printf("1 + 2 = %d\\\\n", sum); return 0;}코드를 작성하고 컴파일 함$ gcc -o debugee debugee.c$ gdb debugeeGN..
[InsecureBankv2] 안전하지 않은 콘텐츠 프로바이더 접근 취약점 개요취약점 설명콘텐츠 프로바이더는 다른 애플리케이션의 데이터베이스, 파일 등에 접근할 수 있도록 도와주며, 접근하기 위해서는 uri가 필요하다. 안전하지 않은 콘텐츠 프로바이더는 uri에 접근할 수 있는 취약점을 말한다.보안 위협취약한 콘텐츠 프로바이더를 통해서 데이터가 노출될 수 있다.발생 위치AndroidManifest.xml 취약점 진단 과정adbStep 1) AndroidManifest.xml 확인프로바이더의 exported 속성이 “true”로 설정되어 있는 것을 확인할 수 있다. 또한, 취약한 프로바이더가 TrackUserContentProvider임을 알 수 있다.Step 2) 데이터 확인로그인 했던 결과가 출력되는 것으로 추측할 수 있고, 이를 통해 데이터를 조회할 수 있는 취약점이..
[Dreamhack] Command Injection ServerSide: Command Injection 1. Command Injection 1.1. Command Injection 인젝션(Injection) 악의적인 데이터를 프로그램에 입력하여 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법 Command Injection 이용자의 입력을 시스템 명령어로 실행하게 하는 취약점 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생 시스템 함수를 사용하면 이용자의 입력을 소프트웨어의 인자로 전달할 수 있음 파이썬으로 개발된 웹 애플리케이션에서 입력한 임의 IP에 ping을 전송하고 싶다면 os.system("ping[user-input]")을, 임의 파일을 읽고 싶다면 os.system("cat[user-input"..
[InsecureBankv2] 루팅 탐지 및 우회 취약점 개요 취약점 설명 안드로이드 애플리케이션은 보안상의 이유로 루트 권한을 막아 놓았다. 루팅 탐지 및 우회는 루트 탐지를 우회하는 취약점을 의미한다. 보안 위협 관리자 권한을 획득할 수 있으며, 민감한 정보에 접근할 수 있다. 발생 위치 /system/bin/su, /system/xbin/su, /system/app/superuser.apk, /data/data/com.noshufou/android.su 취약점 진단 과정 Step 1) 루팅 확인 루팅 확인이 필수적인 금융 및 게임 애플리케이션에서는 다음의 4가지 항목을 필수적으로 점검한다. /system/bin/su /system/xbin/su /system/app/superuser.apk /data/data/com.noshufou/android...
[InsecureBankv2] 액티비티 컴포넌트 취약점 취약점 개요 취약점 설명 보안적으로 취약한 액티비티가 원래의 로직을 무시하고 강제로 다른 로직을 호출하는 취약점을 의미한다. 보안 위협 권한이 없는 사용자가 특정 액티비티에 접근하여 권한 없이 특정 기능을 활성화할 수 있다. 발생 위치 AndroidManifest.xml 취약점 진단 과정 adb Step 1) 액티비티 android:exported 속성이 true인 항목 확인 Step 2) 액티비티 실행 # am start -n [애플리케이션 설치 주소]/[패키지 주소] am start -n com.android.insecurebankv2/com.android.insecurebankv2.ChangePassword Step 3) 특정 사용자의 비밀번호 변경 로그에서 성공적으로 패스워드가 변경된 것을 확인할..
[Dreamhack] SQL Injection Background: Relational DBMS 1. DataBase Management System 1.1. 데이터베이스 관리 시스템 웹 서비스는 데이터베이스에 정보를 저장하고 관리하기 위해 DBMS(DataBase Management System)을 사용 데이터베이스에 새로운 정보를 기록하거나, 기록된 내용을 수정, 삭제하는 역할을 함 다수의 사람이 동시에 데이터베이스에 접근할 수 있음 웹 서비스의 검색 기능과 같이 복잡한 요구사항을 만족하는 데이터를 조회할 수 있음 DBMS 종류 종류 대표적인 DBMS Relational (관계형) MySQL, MariaDB, PostgreSQL, SQLite Non-Relational (비관계형) MongoDB, CouchDB, Redis 관계형은 행과 열의 집..
[InsecureBankv2] 로컬 암호화 이슈 취약점 개요 취약점 설명 중요 정보가 단말기에 저장될 때 암호화되어 있지 않거나 취약한 암호화 체계 사용, 또는 복호화 힌트가 소스코드 내 노출되어 있는 취약점을 말한다. 발생 위치 /data/data/com.android.insecurebankv2/shared_prefs/ 보안 위협 암호화하지 않으면 공격자에게 노출될 가능성이 높아진다. 취약점 진단 과정 Step 1) 인시큐어뱅크 애플리케이션의 데이터가 저장되는 곳으로 이동 com.android.insecurebankv2_preferences.xml, mySharedPreferences.xml 파일이 존재하는 것을 확인할 수 있다. cd /data/data/com.android.insecurebankv2/shared_prefs Step 2) 파일 내용..
[InsecureBankv2] 취약한 인증 메커니즘 취약점 개요 취약점 설명 인증 없이 또는 인증을 우회하여 시스템에 접근할 수 있는 취약점을 의미한다. 보안 위협 인증 없이 우회가 가능하여 다른 액티비티에 접근이 가능하다. 발생 위치 AndroidManifext.xml 취약점 진단 과정 adb Step 1) AndroidManifest.xml의 액티비티 확인 액티비티의 android:exported 속성이 “true”로 설정되어 있는 것을 확인할 수 있다. 이는 다른 액티비티에서 인증 없이 접근 가능함을 의미한다. Step 2) 액티비티 실행 로그인 없이 다른 액티비티로 이동한 것을 확인할 수 있다. # am start [애플리케이션 설치 주소]/[패키지 주소] am start com.android.insecurebankv2/com.android.ins..