프로그래머스 해시 - 전화번호 목록, 문제 확인 문제 설명은 아래와 같다. 한 전화번호가 다른 번호의 접두어인 경우가 있는지 확인하려 함 구조대 전화번호가 119, 지영석의 전화번호가 11 9552 4421일 때, 구조대 전화번호는 지영석 전화번호의 접두사임 phone_book은 전화번호를 담은 배열 접두어인 경우가 있으면 flase, 아니면 true를 반환 프로그래머스 해시 - 전화번호 목록, 문제 풀이 (파이썬) 일단 같은 인덱스인 경우는 스킵하고 더 짧은 값을 찾아낸 후 각 값을 더 짧은 길이만큼으로 잘랐을 때, 포함되는 관계가 있는지 확인하는 방식을 사용했다. def solution(phone_book): for i,k in enumerate(phone_book): for i_,k_ in enum..
리버싱에 관심이 있는 사람이라면 누구나 워게임 사이트에서 제공하는 실행파일이나 우리가 일반적으로 사용하는 실행파일이 아닌 실제 악성 프로그램을 분석해보고 싶은 욕구가 한번쯤 있을 것이다. 그런데 malwares.com과 같이 대부분의 멀웨어 사이트들은 일정부분 다운 이상은 전부 유료이고 아마 상당히 비싸다. 그래서 보통 멀웨어 샘플이 필요한 기업이나 기관, 학교에서 라이센스를 획득하는 것이 대부분인 것으로 알고있다. 퇴사를 하게되면서 이제 샘플 얻는건 꿈도 못꾸겠지 했는데...! 내가 속해있는 (눈팅만하는) 보안 관련 채팅방에 아래와 같은 링크가 올라온 것이 아닌가. 찾아보니 누구나 라이센스 없이 악성코드를 무제한 다운로드 가능한 사이트라고 한다. 멀웨어나 봇넷에 대항하겠다는 취지로 만들어진 프로젝트 어..
혼자 정보보안 공부를 시작하면서 여러가지를 책으로도 공부하고 인터넷으로도 공부하고 했지만 제일 오랜 시간을 투자하지 못했던 것이 자료구조, 알고리즘 공부이다. 오늘부터 최소 이틀에 한문제라도 풀어보려 한다. 해시는 키-값 (key-value) 쌍으로 데이터를 저장하는 자료구조로 프로그래머스(programmers)에서는 해당 자료구조를 학습하기 위한 4가지 문제를 제공하고 있다. 프로그래머스 해시 - 완주하지 못한 선수, 문제확인 문제 설명은 아래와 같다. 단 한명의 선수를 제외하고는 모든 선수가 마라톤을 완주함 선수들의 이름이 담긴 배열 participant이 주어짐 완주한 선수들의 이름이 담긴 배열 completion이 주어짐 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성..
우분투(Ubuntu)에 리눅스 무료 웹방화벽(WAF)인 ModSecurity를 설치 및 설정해본다. 그리고 sql인젝션이 되는 취약한 웹페이지에서 ModSecurity에 sql인젝션 룰설정을 통해 인젝션을 방지할 수 있음을 보인다. 우분투 16.04 x64에서 진행했고 아파치는 Apache 2.4.18 버전이 설치되어있다. - OS 환경 : 우분투 16.04 x64 - apache2 버전: Apache/2.4.18 (Ubuntu) 우분투에 웹방화벽(WAF) ModSecurity 설치 ModSecurity는 apt-get으로 간단히 설치할 수 있다. # apt-get install libapache2-modsecurity -y 설치확인은 2가지 방식으로 할 수 있는데 apachectl -M 을 사용해 로드..
무려 2015년경에 웹해킹 공부를 하겠다고 APM 구축 후 제작했던 허접한 페이지이다. 진짜 세월 빠르다.............벌써 5년이나 흘렀다니.. 앞으로 해당 카테고리에서 다룰 모든 웹관련 테스트나 실습은 해당 웹페이지를 통해 수행할 것이다. DB랑 연결되어 있는 부분은 5곳정도 있다. (다행히도 DB 백업을 해둔 파일이 있어서 바로 복원할 수 있었다) 웹페이지 기능소개 회원가입 기능 회원가입 기능이 있다. 회원가입을 하면 user 테이블에 사용자 정보가 추가된다. 로그인/로그아웃 기능 회원가입된 정보대로 로그인을 수행하면 해당 유저에 대한 세션이 생성되고 로그인 상태가 유지된다. 로그인 기능이 있으니 당연히 로그아웃도 있다. 로그인된 상태에서 로그인 페이지로 들어가면 로그아웃 버튼이 활성화된다...
백업 데이터베이스(DB) 복구하기 mysql 데이터베이스를 백업했으면 .sql 파일이 생겼을 것이다. 이렇게 백업한 데이터베이스 파일은 간단한 명령어를 통해 복원할 수 있다. 현재 데이터베이스는 아래와 같이 기본 데이터베이스만 존재한다. 전체 데이터베이스를 백업했기 때문에 전체 데이터베이스를 복원하는 것인지 개별 데이터베이스를 백업했기 때문에 개별 데이터베이스를 복원하는 것인지에 따라 살짝 다른데 아래와 같이 명령어를 입력했을 때 'ERROR ~ No database selected' 라는 에러 구문이 발생한다면 개별 데이터베이스를 백업한 파일이기 때문에 데이터베이스를 선택해주어야 한다. # mysql -u [계정명] -p < [sql파일] # mysql -u root -p < dasa.sql 따라서 m..
앱 위변조, 리패치징 (Repackaging) 취약점 인시큐어뱅크(InsecureBanckv2) 깃허브에 기재되어 있는 취약점 리스트의 취약점 명명은 '어플리케이션 패칭 (Application Patching)'인데 우리나라에서는 앱 위변조나 리패치징이라는 말을 더 많이 쓰는 것 같아서 이걸 사용했다. 리패키징 취약점이 되려면 앱 위변조 뿐 아니라 설치 시 서명검증에 사용되는 서명키가 노출되어있거나 하는 방식으로 서명키를 알고있어야 한다. 그래야 재배포가 가능하기 때문인데 (플레이스토어에서 서명검증을 하기 때문) 인시큐어뱅크에서는 서명키 노출 취약점이 따로 있지는 않다. 따라서 안드로이드 스튜디오에서 생성한 서명키 파일(jks)로 변조한 앱에 직접 서명해주는 방식을 사용하도록 하겠다. 안드로이드 스튜디오..
안드로이드 메모리 덤프 취약점 진단 인시큐어뱅크(InsecureBankv2) 앱을 실행시킨 후 ps 명령어로 pid를 찾아준다. pid처럼 보이는 숫자 4개가 연속되어있는데 첫번째 값이 인시큐어뱅크 앱의 pid 값이다. 그리고 덤프 저장을 위해 /data/data에 tmp 폴더를 생성해주었다. # ps | grep insecure # mkdir /data/data/tmp 을 사용해 hprof 확장자로 덤프를 생성해준다. # am dumpheap 18138 /data/data/tmp/insecure.hprof # exit > adb pull /data/data/tmp/insecure.hprof 그리고 strings64.exe를 사용해 내부의 문..
안드로이드 내부저장소/외부저장소 안드로이드 저장소는 내부저장소/외부저장소로 나뉘는데 여기서 외부저장소는 SD카드와 같은 이동식 저장소를 의미한다. 앱자체가 지나지케 클 경우 외부저장소에 앱을 설치하기도 하고 접근제한이 필요치 않거나 다른 앱과 공유하고 싶은 파일이 있을 경우 해당 파일을 외부저장소에 저장하기도 한다. 내부저장소는 다른 앱이 접근하지 못하지만 SD카드는 설정에 따라 외부에서도 접근할 수 있는 저장소이기 때문에 SD카드에 중요정보가 노출될 수 있는 가능성이 존재한다. SD카드 저장소는 /sdcard 에서 확인할 수 있다. 안드로이드 SD 카드 저장 취약점 진단 AndrioidManifest.xml 을 확인하면, "WRITE_EXTERNAL_STORAGE" 와 "READ_EXTERNAL_STO..
개발자 백도어 취약점 백도어는 워낙 큰 개념이라 정의하기 나름인 느낌이지만 일반적인 인증을 거치지 않고 접속하는 방법이라고 할 수 있다. 보안에서의 백도어는 서버해킹 후 원격에서 쉽게 접속하려고 포트를 열어놓는 느낌이라면 개발자 백도어는 유지보수를 하거나 할 때 시간을 단축할 목적으로 만들어놓는 경우이다. 개발자 백도어 취약점 진단 과정 침해과정 분석이 아니므로 열린 포트가 있는지 등을 확인하는 문제는 아니고 인증 부분 관련 소스를 보고 인증을 우회하거나 피할 수 있는 로직?이 있는지 확인해야 한다. 자바 코드는 아직도 보기가 힘들지만, username이 devadmin인지 확인하고 맞으면 httpPost2에 대한 응답값을 내려주고 있다. 비밀번호 없이 devadmin ID 입력만으로 로그인에 성공하는 ..
HTTP 통신과 파라미터 조작 취약점을 하나로 묶어 포스팅하려 한다. 인시큐어뱅크(InsecureBankv2)의 깃허브에 나와있는 취약점 명칭 그대로 썼는데 KISA에서 나온 가이드 기준으로 보면, '중요정보 평문 전송 취약점'이라고 할 수 있을 것 같다. HTTP 통신 및 파라미터 조작 취약점 진단 요즘 HTTP 통신을 하는 곳이 있을까 싶을정도로 HTTP 통신은 보안을 전혀 고려하지 않은 프로토콜이라는 것은 보안을 하는 사람이라면 누구나 알고있을 것이다. 평문 전송을 하기 때문에 정보 유출은 당연하고 입력값 검증을 하지 않는다는 가정하에 조작도 가능하게 된다. 먼저, 프록시 설정부터 수행해준다. 녹스 에뮬레이터 기준으로 설정>WiFi 에서 WiredSSID 를 길게 클릭하면 아래와 같이 WiredSS..
코로나19로 인해 재택근무 및 온라인 수업이 활성화되면서 화상회의 솔루션, 줌(zoom)이 극부상 하기 시작했다. 하지만 하나둘씩 터지기 시작한 줌의 보안문제가 아직도 시끄럽다. 전세계가 외치고 있는 '줌(zoom) 아웃'의 배경에 어떤 보안 문제가 있는지 간략히 살펴본다. 취약한 암호화 알고리즘, 모드 사용 (AES-128-ECB) 시티즌랩은 줌이 AES-256 암호화를 사용한다고 밝혔으나 실제론 AES-128 암호화를 사용한 것으로 드러났다고 밝혔다. AES는 대칭키 암호화 방식으로 AES- 뒤의 숫자는 암호화할 때 사용하는 암호화 키의 길이를 뜻한다. 그리고 AES-128은 기준상 안전하지 않은 암호화 방식이다. 실제로 줌(zoom) 공식 웹사이트를 찾아보면 AES-256 암호화 방식을 사용하고 있..