본문으로 바로가기

1. 인시큐어뱅크 앱 이란?

- 모바일 뱅킹 취약점 진단을 위한 테스트 용도로 제작된 애플리케이션이다.
- 안드로이드 앱 취약점 진단을 실습할 수 있는 환경을 제공한다.

- 2019년 이후로 업데이트가 중단되었다.

 

2. 취약점 진단 실습 가능 항목

- 인시큐어뱅크 앱에서 아래와 같은 25가지 항목을 실습할 수 있다.

결함이 있는 브로드캐스트 수신기 메모리의 민감한 정보 사용자 이름 열거 문제
의도 스니핑 및 주입 안전하지 않은 로깅 메커니즘 개발자 백도어
약한 인증 메커니즘 안드로이드 페이스트보드 취약점 약한 변경 암호 구현
로컬 암호화 문제 애플리케이션 디버깅 가능 파라미터 조작
취약한 활동 구성 요소 Android 키보드 캐시 문제 하드코딩된 비밀
루트 탐지 및 우회 안드로이드 백업 취약점 약한 암호화 구현
에뮬레이터 감지 및 우회 런타임 조작 애플리케이션 패치
안전하지 않은 콘텐츠 제공자 액세스 안전하지 않은 SDCard 스토리지 안전하지 않은 HTTP 연결
안전하지 않은 Webview 구현    

 

3. 파이썬 2.7.18 버전 설치

인시큐어뱅크 앱을 실행하기 위해선 인시큐어뱅크 서버를 PC에 설치하여야 한다.

인시큐어뱅크 서버는 파이썬 2 버전에서만 동작하므로, 아래의 링크에 접속하여 파이썬 2.7.18 버전을 설치한다.

https://www.python.org/downloads/release/python-2718/

 

Python Release Python 2.7.18

The official home of the Python Programming Language

www.python.org

 

4. 인시큐어뱅크 서버 설치 및 실행

- 아래의 사이트에 접속하여 Server.zip 파일을 다운로드한다.

https://github.com/dineshshetty/Android-InsecureBankv2/releases/tag/2.3.1

 

Release 2.3.1 · dineshshetty/Android-InsecureBankv2

Updated Code to work with AndroidStudio 3.3.2

github.com

 

- 다운로드한 압축파일을 해제한다.

※ 압축파일 해제 경로에 한글이 들어가면 실행 시 오류가 발생한다.

 

- 아래의 명령어를 실행하여 서버 구동에 필요한 파일을 다운로드한다.

# 압축 해제 경로로 이동
cd C:\AndroLabServer

# 서버 실행에 필요한 파일 다운로드
pip install -r requirements.txt

 

- app.py 파일을 메모장으로 열어 아래와 같이 내용을 변경한다.

# 3 line을 아래와 같이 수정
# from web.wsgiserver import CherryPyWSGIServer 
from cheroot.wsgi import Server as CherryPyWSGIServer

 

- 아래의 명령어를 입력하여 서버를 실행한다.

python app.py

 

5. 인시큐어뱅크 앱 설치

- 아래의 사이트에 접속하여 InsecureBankv2.apk 파일을 다운로드한 뒤 디바이스에 설치한다.

https://github.com/dineshshetty/Android-InsecureBankv2/releases/tag/2.3.1

 

Release 2.3.1 · dineshshetty/Android-InsecureBankv2

Updated Code to work with AndroidStudio 3.3.2

github.com

 

- 본문에선 안드로이드 가상환경 녹스(nox)에 설치하였음.

※ Nox에 설치할 경우 Android 7(32bit) 버전에 설치하여야 정상 동작하므로 주의할 것.

 

6. 인시큐어뱅크 앱 실행

- 설치한 인시큐어뱅크 앱을 실행한 후, 서버와의 연결을 위해 IP/Port 설정을 진행한다.

- 설정을 마치고 Submit 버튼을 클릭하면 "Server Configured Successfully!!"라는 토스트 알림이 뜬다.

※ Server IP는 PC의 현재 IP주소를 입력하면 된다.

 

- 아래의 계정정보를 입력하여 로그인을 시도한다.

# 인시큐어뱅크 기본 계정정보(default ID/PW)
username : dinesh
password : Dinesh@123$

username : jack
password : Jack@123$

 

7. 오류 해결방법

7.1. 지정한 서비스 포트가 사용중일 경우 

- PC에서 8888 포트를 이미 사용하고 있을 경우 아래와 같은 오류가 발생한다.

- app.py 실행 시 포트를 지정하여 실행하여 오류를 해결한다.

오류내용#1
The server is hosted on port: 8888
Traceback (most recent call last):
  File "app.py", line 155, in <module>
    server.start()
  File "C:\Python\lib\site-packages\cheroot\server.py", line 1849, in start
    self.prepare()
  File "C:\Python\lib\site-packages\cheroot\server.py", line 1804, in prepare
    raise socket.error(msg)
socket.error: No socket could be created -- (('0.0.0.0', 8888): [Errno 10048] 각 소켓 주소(프로토콜/네트워크 주소/포트))
해결방법#1
python app.py --port [포트번호]
#에러(error) 해결방법
python app.py --port 포트번호

 

7.2. 지정한 서비스 포트가 사용중일 경우 

- app.py 실행경로에 한글이 들어갔을 경우 로그인 에러가 발생한다. 서버 경로에 한글이 없도록 조치한다.

오류내용#2
The server is hosted on port: 8888
[2023-11-17 09:51:50,786] ERROR in app: Exception on /login [POST]
Traceback (most recent call last):
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\flask\app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\flask\app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\flask\app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "app.py", line 36, in login
    u = User.query.filter(User.username == request.form["username"]).first()
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\orm\query.py", line 2824, in first
    return self.limit(1)._iter().first()
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\orm\query.py", line 2919, in _iter
    execution_options={"_sa_orm_load_options": self.load_options},
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\orm\session.py", line 1716, in execute
    conn = self._connection_for_bind(bind)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\orm\session.py", line 1556, in _connection_for_bind
    engine, execution_options
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\orm\session.py", line 750, in _connection_for_bind
    conn = bind.connect()
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\engine\base.py", line 3325, in connect
    return self._connection_cls(self, close_with_result=close_with_result)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\engine\base.py", line 96, in __init__
    else engine.raw_connection()
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\engine\base.py", line 3404, in raw_connection
    return self._wrap_pool_connect(self.pool.connect, _connection)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\engine\base.py", line 3375, in _wrap_pool_connect
    e, dialect, self
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\engine\base.py", line 2209, in _handle_dbapi_exception_noconnection
    sqlalchemy_exception, with_traceback=exc_info[2], from_=e
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\engine\base.py", line 3371, in _wrap_pool_connect
    return fn()
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\pool\base.py", line 327, in connect
    return _ConnectionFairy._checkout(self)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\pool\base.py", line 894, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\pool\base.py", line 493, in checkout
    rec = pool._do_get()
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\pool\impl.py", line 256, in _do_get
    return self._create_connection()
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\pool\base.py", line 273, in _create_connection
    return _ConnectionRecord(self)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\pool\base.py", line 388, in __init__
    self.__connect()
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\pool\base.py", line 691, in __connect
    pool.logger.debug("Error on connect(): %s", e)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\util\langhelpers.py", line 72, in __exit__
    with_traceback=exc_tb,
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\pool\base.py", line 686, in __connect
    self.dbapi_connection = connection = pool._invoke_creator(self)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\engine\create.py", line 574, in connect
    return dialect.connect(*cargs, **cparams)
  File "C:\Users\hagsig\anaconda3\envs\py_2.7.18\lib\site-packages\sqlalchemy\engine\default.py", line 598, in connect
    return self.dbapi.connect(*cargs, **cparams)
OperationalError: (sqlite3.OperationalError) unable to open database file
(Background on this error at: https://sqlalche.me/e/14/e3q8)
 [!] 500 Internal Server Error: The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
해결방법#2
경로에 한글이 없도록 조치한다.

 

- python 2.7.18 외 다른 버전의 python이 설치되어 있거나, 다른 버전이 환경변수로 등록되어 있을 경우 로그인 오류가 발생한다. python 2.7.18 버전을 환경변수로 등록하고 나머지 버전은 모두 삭제한다.

 

- ImportError: No module named wsgiserver 오류 발생 시 아래의 글을 참고하여 오류를 해결.

2023.04.08 - [오류 해결] - ImportError: No module named wsgiserver 오류 해결방법

 

ImportError: No module named wsgiserver 오류 해결방법

인시큐어뱅크 서버 실행 시 아래와 같은 오류가 발생하는 경우가 있다. C:\AndroLabServer>python app.py Traceback (most recent call last): File "app.py", line 3, in from web.wsgiserver import CherryPyWSGIServer ImportError: No module

hagsig.tistory.com