일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ESXi
- InsecureBank
- igoat
- Reflected XSS
- beebox
- lord of sql injection
- foremost
- frida
- SQL Injection
- otter
- vulnhub
- diva
- logstash
- kibana
- NTFS
- Suninatas
- ctf
- CTF-d
- Docker
- XSS
- 파이썬
- Volatility
- elasticsearch
- 인시큐어뱅크
- base64
- 2018
- 안드로이드
- MFT
- Openstack
- Strings
- Today
- Total
목록InsecureBank (16)
Information Security
정의 - 시스템의 어떠한 인증 체계에 취약점이 존재하여 공격자가 시스템에 존재하는 사용자 계정 목록을 획득할 수 있는 취약점 영향 - 에러메시지를 통해 아이디/비밀번호를 유/무 판별할 수 있는 정보를 획득할 수 있다. 진단 시스템에 존재하지 않는 아이디와 비밀번호를 입력했다. 메시지를 출력하여 사용자 계정의 존재 유무를 알려준다. 시스템에 존재하는 아이디의 비밀번호를 잘못 입력했다. 비밀번호가 틀렸다는 사실을 메시지로 알려준다. 시스템에 존재하는 아이디와 정확한 비밀번호를 입력했다. 로그인에 성공했다는 메시지가 출력됬다. 대응방안 - 로그인 시도 속도를 제한하여 자동화 도구를 이용한 공격을 방지한다. 로그인 실패시 메시지는 상세한 피드백을 제공하지 않고 포괄적으로 대응한다. 실시간 모니터링을 통해 비정상..
정의 - 관리자의 패스워드나 중요 정보 또는 암호화키 등을 주석으러 처리하면 문제점이 발생할 수 있다. 발생 위치 - Changepassword.java, DoLogin.java 영향 - 인시큐어뱅크의 경우 하드코드된 사용자 계정과 암호화키를 노출한다. 진단 Find in Path에 jack@을 입력해 소스 코드에서 주석으로 처리되어 있는지 확인했다. “This is the super secret key123”이라는 중요한 AES 암호화 키가 노출된 것을 알수 있다. 대칭키 블록 암호 알고리즘으로 키값을 노출할 경우 복호화가 될 수 있다. 대응방안 - 키 값은 앱에 저장하지 않고 서버에 저장하여 보호한다. 개발 완료 후 주석처리에 주의를 기울여야한다. 암호화키의 경우, 솔트를 사용하여 암호화의 안전성을 ..
정의 - 요청하는 값을 중간에서 가로챈 후 매개 변수값을 변조하여 전송한다. 영향 - 사용자의 입력값을 확인하여 정보를 수정해 악용할 경우 개인 신상 유출이나 신용카드 도용등의 피해가 발생할 수 있다. 진단 계좌 번호와 입금 금액을 입력하고 전송하는 중간에서 버프슈트로 잡았다. 입금 금액을 123456에서 78901으로 변경해서 전송했다. ViewStatement 상에서 보이는 데이터는 변조되기 전의 데이터인 123456이라는 것을 알 수 있다. 대응방안 - 모든 입력값에 대한 유효성 검증을 서버에서 수행한다. 상태 정보나 민감한 데이터 특히 사용자의 세션정보와 같은 중요한 정보는 반드시 서버에서 검증한다.
정의 - 애플리케이션과 서버간 데이터 통신을 할 때 HTTP 통신을 사용한다. 영향 - 스니핑/스푸핑 공격을 이용하여 사용자들의 입력값을 패킷 정보에서 탈취할 수 있다. 진단 버프슈트를 이용해 인시큐어뱅크 로그인 과정을 중간에서 보았는데 username과 password과 평문으로 노출되는 것을 알 수 있다. 파라미터 값을 보면 username과 Password가 평문으로 노출되는 것을 확인할 수 있다. 보내는 사람과 받는 사람의 금액을 입력하고 계좌이체를 시도해 보았다. username, password 및 계좌 번호 입금 금액이 평문으로 노출되는 것을 알 수 있다. 대응방안 - 모든 입력값에 대한 유효성 검증을 서버에서 수행한다. 상태 정보나 민감한 데이터 특히 사용자의 세션정보와 같은 중요한 정보는..
정의 - 앱이 실행되는 도중 메모리상에 악의적인 행동을 하는 취약점 발생 위치 - 메모리 영향 - 메모리상에서 데이터 변조를 할 수 있다. 진단 모든 기능이 메모리상에 올라가야 런타임 조작이 가능하기 때문에 jdb에 사용할 인시큐어 디버깅 포트 번호를 확인했다. adb를 통해 디버깅 포트를 로컬 포트로 포트포워딩해준 후 jdb 명령어를 통해 로컬 디버깅 포트로 연결한다. 로그인하지 않고 패스워드를 변경하기 위해서는 ChangePassword 액티비티를 컴포넌트 취약점을 사용하여 강제로 실행시켜야 한다. 그림 1-3처럼 명령어를 실행하면 ChangePassword 화면이 나타난다. ChangePassword 클래스의 스마일코드 86번째 줄에 breakpoint를 설정했다. this.uname에 jack으로..
정의 - 애플리케이션 설치 파일과 저장소에 저장된 파일을 사용자 PC에 저장하게 된다. 이 경우 사용자가 데이터를 관리할 수 있는 있지만 저장된 파일이 유출될 가능성이 있는 취약점이다. 영향 - 사용자 암호가 유출될 수 있고 사용자 정보가 유출될 수 있다. 진단 백업은 해당 애플리케이션의 AndroidManifest.xml에 포함된 allowBackup 속성을 따른다. ture로 설정된 경우에 백업이 가능하다. 애플리케이션에 대한 취약점 점검을 위해 백업을 진행하는 안내 메시지를 보여준다. 그림 1-2처럼 “Back up my data” 버튼을 누르면 백업이 완료되면 명령에서 설정한 대로 insecurebankv2.ab 파일이 생성된다. insecurebaknkv2.ab 파일이 jar 파일로 변환되었으며..
정의 - 사용자가 개인 정보나 중요한 정보를 복사할 때 클립보드에 저장된 임시 정보를 별도의 권한 없이 허가 되지 않은 사용자가 확인할 수 있기 때문에 발생하는 취약점이다. 발생 위치 - Android Clipboard Framework 영향 - 사용자가 아이디, 패스워드를 저장해두고 사용자가 패스워드를 복사하여 로그인 할 때 간편하게 패스워드를 입력하도록 지원한다. 로그인 정보뿐만 아니라 계좌번호, 집주소 등을 저장할 수 있다. 진단 클립보드 module 설치를 했다. 모듈의 설명은 module search “모듈 이름” –d로 확인 가능하다. 클립보드에 복사했던 정보가 그대로 출력된다. 대응방안 - 클립보드에 존재하는 데이터를 제한된 시간 동안만 유지하도록 설정하고 설정한 시간이 지나면 삭제하도록 하..
정의 - 민감한 데이터나 노출되면 안 될 정보들을 로그로 남길 경우에 발생하는 취약점이다. 발생 위치 - 주기억 장치, 물리적 메모리 램 영향 - 로그에 중요한 정보들이 남게 되면 정보가 유출된다. 진단 안드로이드 도구 Monitor 프로그램을 보면 아이디와 패스워드가 노출된 것을 확인할 수 있다. 계좌이체가 되는 과정에서 생성되는 로그가 그대로 노출되는 것을 확인할 수 있다. 대응방안 - 중요한 정보들이 노출되지 않도록 실제 소스 코드에 어느 부분에서 발생되는지 확인한 후 내용들이 출력되지 않도록 출력되는 부분을 지운다. DoLogin.java에서 평문으로 출력되는 소스코드 부분을 삭제한다. DoTransfer.java에서 username,password 평문으로 출력되는 부분 삭제한다.