* 사업 등 관련 문의: T) 02-322-4688, F) 02-322-4646, E) info@wikisecurity.net
어플리케이션 소스코드 취약점 진단시 전용툴과 함께 사용할 유용한 툴
대부분의 어플리케이션 소스 취약점 진단작업은 다량의 소스파일을 받아 취약점 진단을 수행하게 된다.
Fortify와 같은 소스 취약점진단 전용 툴을 이용하는 정적진단과 전문 컨설턴트의 동적 수작업 진단을 병행하는것이 대부분이다.
이런 상황에서 수작업 진단시 많은 양의 소스들을 육안으로 확인하는 것은 상당히 어렵기 때문에 몇 가지 유용한 도구들을 활용하는 것이 일반적이다.
1. 문자열 검색 툴
많은 파일들 중에서 특정 문자열을 검색해주는 유용한 윈도우용 툴로써, 유닉스나 리눅스가 기본적으로 제공하는 grep과 같은 기능을 윈도우에서 제공해주는 툴이다.
필자가 사용해본 경험으로 유용하다고 생각한 툴이기 때문에 더 좋은 툴들이 있으면 함께 공유하면 좋겠다.
- AstroGrep 4.4.4
이툴은 GNU 라이선스로 공개되어 있기 때문에 누구나 이 정책하에 무료로 사용할 수 있으며, 소스코드를 공개하고 있어서 필요하다면 수정 또는 추가개발해서 사용할 수도 있다.
현재(2016.4.1) 공개된 버전이 4.4.4인 것을 보면 지속적인 버전업데이트와 공개가 이뤄지고 있는 것을 짐작할 수 있으며, .Net Framework를 기반으로 개발되었기 때문에 시전에 .Net Freamework의 설치가 필요하다.
특징을 꼽는다면, GUI가 아주 심풀하고 직관적이기 때문에 누구나 쉽게 이용할 수 있고, 한글은 당연히 지원을 하며, 검색결과 내에서 검색하기와 제외문자열 설정하기와 같은 옵션 기능을 제공한다.
특히, 검색된 파일목록을 상단 윈도우에 보여주고 하단 윈도우에는 해당 소스파일의 검색 문자열의 앞뒤 소스를 보여주고 필요시 해당 파일을 더블클릭하여 별도의 에디터를 띄워서 소스를 자세히 볼수 있는 기능을 제공하고 있다.
* 다운로드: http://astrogrep.sourceforge.net/download/
- PowerGREP 4.7.0
이 툴은 안타깝게도 상용툴이라서 15일간의 Trial Version을 다운받아 사용할 수 있으며, 현재 4.7 버전을 제공하고 있는 것을 보면 지속적인 업그레이드가 있었던 것으로 짐작된다.
상용제품이라서 그런지 AstroGrep보다는 훨씬 많은 기능들을 제공하는데, 그러다 보니 GUI가 복잡해 보여서 가장 잘 사용하는 윈도우만 띄워서 사용하면 좋다.
특히, 상당히 많은 종류의 라이브러리를 제공하고 있는데, 문자열을 검색하고자 하는 대상 파일이 어떤 것이냐에 따라 기본적인 검색패턴을 정규형식으로 자동제공하고 사용자가 수정해서 검색할 수 있는 기능을 제공한다.
예를 들면, 대상 파일들 중에서 이메일 주소만을 찾고자 한다면, \b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}\b 와 같은 정규형식을 제공해주기 때문에 다용도로 사용하기 좋은 툴이다.
* 다운로드: http://www.powergrep.com/download.html
2. 플로우차트 생성 툴
소스 취약점 진단 작업은 많은 소스들을 육안 확인을 하게 되는데, 소스 사이즈가 클수록 소스를 보고 로직을 이해하는데는 많은 시간이 걸리기 마련이다.
이런 시간을 절약해주는 툴이 플로우차트 툴이다. 이런 툴들은 원래 여러가지 목적과 용도로 쓰이지만 소스 취약점 진단시에도 꽤 도움이되는 툴이다.
그러나 이런 툴을 선정할 때는 몇 가지 유의해야 할 사항이 있다. 진단하고자 하는 개발 소스언어의 종류를 지원하는지 여부가 가장 중요한데, 지원하는 개발언어가 약간씩 다르기 때문이다.
또하나는, 해당 툴의 기능을 자세히 확인해보지 않으면, 플로우차트를 생성해주는 툴이 아니라 플로우차트를 제작하는 툴을 다운받아 실망할 수도 있다. ^^;;
구글링하면서 다운받아 테스트해본 몇 개의 플로우차트 툴을 소개하고자 한다.
- Visustin 7
이 툴은 안타깝게도 상용툴이고, 일반적인 개발언어 이외에도 ABAB, Ada, Ruby, SAS, Cobol, Fortran 등 약 35개의 많은 개발언어를 지원한다.
GUI도 심플하게 구성되어 있어서, 해당 소스의 로직을 아주 쉽게 이해할 수 있다. 소스를 선택하면, 요약형태와 상세내용의 플로우차트를 생성해주는데,
Demo버전은 한개의 소스만 플로우차트 생성이 가능하고 상용버전에서는 여러 개의 소스파일을 처리할 수 있다고 한다.
또한, 다른 툴도 제공하긴 하지만, 생성된 플로우차트를 MS Word 또는 Visio로 export하는 기능도 제공하고 있어서 경우에 따라서는 아주 유용한 기능이 될 수 있다.
* 다운로드: http://www.aivosto.com/shareware/visus710.zip
- Code Visual to Flowchart 2.0
이 툴도 상용툴이며, Demo version은 30번 사용할 수 있도록 사용제한이 걸려 있다. 지원되는 개발언어는 Java, C, PHP 등 약 10여개의 개발언어를 지원한다.
다른 툴과 마찬가지로 요약형태와 상세내용의 플로우차트를 생성해주는데, 지원 언어별로 샘플 코드를 제공하고 있어서 다른 개발언어의 경우 어떻게 표시되는지 짐작할 수 있다.
또한, 소스코드의 전체에 대한 플로우차트 생성뿐만 아니라 특정영역을 지정하여 플로우차트를 생성할수 있는 기능도 제공하고 있다.
* 다운로드: http://www.fatesoft.com/s2f/download/CodeVisual2FlowChart.exe
* 문자열 검색 키워드
getparam, 파라미터, request, DB, select, where, hidden, 포워드, 포워딩, file, upload, fileup*, file_up*, 업로드
down, filedown*, file_down*, 다운, save, password, passwd, 패스워드, admin, root, manager, 관리자, member, bak, old, 공통모듈, editor, 에디터, filter, security, 보안, xls*, 엑셀, json, 카드, 신용, 주민, Jumin, .xml, .properties, jdbc, odbc, test, “url=”