일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- frida
- NTFS
- beebox
- base64
- XSS
- 2018
- elasticsearch
- Openstack
- Volatility
- logstash
- CTF-d
- 인시큐어뱅크
- otter
- ESXi
- 안드로이드
- vulnhub
- kibana
- ctf
- Suninatas
- Reflected XSS
- diva
- InsecureBank
- foremost
- lord of sql injection
- SQL Injection
- igoat
- Docker
- 파이썬
- MFT
- Strings
- Today
- Total
목록전체 글 (426)
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 평문으로 출력되는 부분 삭제한다.
정의 - 애플리케이션이 실행되면 일정량의 메모리를 차지하고 실행 중에 필요한 정보들이 저장된다. 발생 위치 - 주기억 장치, 물리적 메모리 램 영향 - 앱에 입력하는 모든 입력값과 앱이 실행되는 모든 정보들이 메모리에 적재되어 실행한 후 실행이 완료되면 다른 데이터들로 채워진다. 진단 ps | grep inse 명령어로 현재 실행되고 있는 인시큐어뱅크 앱의 PID를 확인했다 am 명령어의 dumpheap 옵션으로 인시큐어뱅크 앱의 힙 메모리를 추출했다. pull 명령어로 힙 메모리 덤프 파일을 PC로 가져왔다. 힙 메모리 덤프 파일을 가져온 것을 확인할 수 있다. HxD 프로그램으로 덤프 파일을 확인한 결과 username, password는 평문으로 노출되어 있고 계좌정보, 금액까지 노출된 것을 알 수..