목록분류 전체보기 (420)
외로운 Nova의 작업실
- 문제 설명 플래그는 / 디렉터리에 flag 파일로 존재한다고 합니다. - 소스코드 const express=require('express'); const bodyParser=require('body-parser'); const ejs=require('ejs'); const hash=require('crypto-js/sha256'); const fs = require('fs'); const app=express(); var file={}; var read={}; function isObject(obj) { return obj !== null && typeof obj === 'object'; } function setValue(obj, key, value) { const keylist = key.spli..
- 취약점 소개 개발자들이 유지보수나 디버깅시 인증을 회피할 목적으로 만든 백도어가 있을 수 있습니다. 이러한 개발자의 백도어가 공격자에게 발견되면 시스템에 큰 위험을 초래할 수 있습니다. - 취약점 진단 과정 DoLogin$RequestTask.class 코드를 보겠습니다. package com.android.insecurebankv2; import android.content.Intent; import android.content.SharedPreferences; import android.os.AsyncTask; import android.util.Base64; import android.util.Log; import java.io.BufferedReader; import java.io.IOExce..
- 취약점 소개 로그인 에러메시지에서 계정이 없는 경우, 비밀번호가 틀린경우에따라 에러메시지가 다르다면, 이를 이용해서 사용자 계정 목록을 획득할 수 있는 취약점을 말합니다. - 취약점 분석 먼저 계정이 없는 경우 에러메시지를 보겠습니다. User Does not Exist라는 에러메시지가 나옵니다. 이제 패스워드가 다른 경우를 보겠습니다. Wrong the password라는 에러메시지가 나옵니다. 이제 올바른 경우를 보겠습니다. Correct Credentials라는 메시지가 나옵니다. 이러한 정보를 토대로 서버에 저장된 사용자의 계정 및 패스워드등을 알아낼 수 있습니다. - 취약점 대응 방안 로그인 실패시 메시지는 상세한 피드백을 제공하지않고 포괄적으로 대응해야합니다. 로그인 시도 속도를 제한하여 ..
- 취약점 소개 하드코딩이란 패스워드나 중요 정보 또는 암호화키를 불러오지않고 직접 코드내에 써넣는 것을 말합니다. 이처럼 하드코딩을 하게되면 디컴파일 했을때 중요 정보나 패스워드등을 노출할 수 있습니다. - 취약점 진단 과정 디컴파일 후 소스코드에 중요정보가 있는 지 확인합니다. public void postData(String valueIWantToSend) throws ClientProtocolException, IOException, JSONException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, IllegalBlockSizeException, ..
- 취약점 소개 안드로이드 애플리케이션에서 요청하는 값을 중간에서 가로챈 후 매개변수 값을 변조하여 전송할 수 있는 취약점 입니다. - 취약점 진단 프록시서버로 로그인 패킷을 잡아보겠습니다. 정상적으로 로그인이 되어야하지만, 패스워드를 변경하여 패킷을 조작해 서버로 보내보겠습니다. 그러면 서버에서 응답이 옵니다. 사용자 입장에서는 올바른 패스워드를 입력했지만 로그인이 안됬음을 느낄 것입니다. 이처럼 패킷의 파라미터를 조작할 수 있습니다. 이번에는 계좌이체를 조작해보겠습니다. 999999999 계좌에서 555555555계좌로 10000원을 보내고 있습니다. 이를 99999로 변경해보겠습니다. 이제 statements 액티비티를 보게되면 10000원을 보낸걸로 되어있습니다. 실제로는 99999를 보냈음에도 ..
- 취약점 소개 앱이 서버와 통신을 할때 HTTP 프로토콜을 이용하면 패킷이 암호화되어있지않아 스니핑 공격을 통해 패킷 정보를 탈취할 수 있습니다. - 취약점 진단 안드로이드에서 패킷을 보는 방법은 프록시를 사용하는 방법과 네트워크 상에서 패킷 정보를 확인하는 방법이 있습니다. 프록시를 사용하는 방법은 버프스위트를 사용하며 네트워크 상에서 패킷 정보를 확인하는 방법은 안드로이드 앱에서 tPacketCapture 앱으로 패킷을 캡처하고 이 캡처본을 와이어샤크를 통해 보는 방법입니다. 해당 블로그에서는 버프스위트를 사용하여 프록시로 패킷을 봐보겠습니다. 먼저 버프스위트를 다운로드해줍니다. https://portswigger.net/burp/community-download-thank-you Upgrade y..
- 취약점 소개 어플들은 중요 정보나 설정들을 저장소에 저장합니다. 이때 외부저장소를 사용할 경우 아무나 해당 정보에 접근할 수 있고 내부 저장소에 저장하더라도 암호화가 되어있지않으면 정보를 탈취당할 수 있습니다. 보통 어플들의 저장소는 아래와 같은 경로에 있습니다. /mnt/sdcard : 외부저장소로 누구나 쓰고 읽고 할 수 있습니다. /data/data/앱이름 : 내부저장소로 앱에 관련된 유저만이 읽고 쓸 수 있습니다. 또한 /data/data/앱이름 경로에서 중요하게 봐야할 디렉터리는 아래와 같습니다. databases : SQLite 데이터베이스 파일로 설정파일, 콘텐츠 파일등을 저장합니다. shared_prefs : 공유 프리퍼런스로 많이 사용하며 앱에 공유되는 설정파일등을 저장합니다. - 취..
- 정보 주체 동의 시 고지 의무사항 왜 : 개인정보의 수집,이용 목적 무엇을 : 수집하려는 개인정보 항목 언제까지 : 개인정보의 보유 및 이용 기간 추가 : 동의를 거부할 권리가 있다는 사실 및 동의 거부에 따른 불이익이 있는 경우에는 그 불이익의 내용 - 제3자 제공에 따른 정보주체 동의시 고지 의무 사항 누구에게 : 개인정보를 제공 받는 자 왜 : 개인정보를 제공받자는 자의 개인정보 이용목적 무엇을 : 제공하는 개인정보의 항목 언제까지 : 개인정보를 제공받는 자의 개인정보 보유 및 이용 기간 추가 : 동의를 거부할 권리가 있다는 사실 및 동의 거부에 따른 불이익이 있는 경우에는 그 불이익의 내용 - 아동의 개인정보 수집 만 14세 미만 아동의 개인정보를 처리하려면 법정대리인의 동의를 받아야합니다. ..
- 취약점 소개 전에 매니페스트 파일의 debuggable 속성을 true로 하면 안됨을 배웠습니다. 만약 true로 하게되면 디버깅을 통해 악의적인 행동을 할 수 있습니다. 이번에는 디버깅을 통해 런타임 조작이 어떻게 이루어지는지 알아보겠습니다. 악의적인 행동은 로그인 없이 dinesh 유저의 패스워드를 변경하는 것입니다. - 취약점 진단 먼저, 녹스플레이어에서 인시큐어뱅크 앱이 사용하고 있는 포트를 알아냅니다. adb jdwp 저는 4202 포트입니다. 이포트를 포트포워딩해줍니다. adb forward tcp:1111 jdwp:4202 이제 jdb를 이 포트에 붙여줍니다. jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=1111 그러면 디..
- 취약점 소개 안드로이드는 로컬 컴퓨터에 백업을 해놓을 수 있는 기능이 있습니다. 이때 백업 파일을 위변조할 수 있는 취약점이 있습니다. - 취약점 진단 먼저 실제 백업을 해보겠습니다. adb를 이용해서 백업을 진행해줍니다. 원래는 전체백업이 이루어지지만 명령어를 사용해서 인시큐어뱅크 앱만 백업해줍니다. adb backup com.android.insecurebankv2 -f insecurebankv2.ab 이러면 아래처럼 녹스에서 화면이뜹니다. 비밀번호 입력 안해도도되고 백업을 수행해줍니다. 이제 ab파일을 보기위해서는 어패킹을 해줘야합니다. 이때 사용되는 프로그램이 abe입니다. abe.jar파일은 아래에서 다운받을 수 있습니다. https://github.com/nelenkov/android-ba..