본문 바로가기

Programming

[ Programming ] History of My Solutions.

우연히 문득 하드를 까보는데, 지금까지 진행했던 프로젝트(교내, 도내급)이 많았다.
프로젝트에 같이 참여했던 분께 감사의 표시와 추억을 되살리는 의미가 되는거 같아 한번 블로깅 해보기로 했다.


LED(Learn English Dotgabi)
[ 2005. 06. ~ 2005. - Visual Basic (Visual Studio 6)]


2005년 대학교 첫 작품(?)


2005년 정보보호동아리에 가입하고 학술제 땜에 낸 작품인데...
정보보호랑 아무런 관련이 없는 영어 단어를 줄줄 내 주는 프로그램이다(업데이트도됨ㅋ).
컴텨 사용하다가 무의식중에 보면서 영단어를 암기(?)하는 프로그램이지만, 효율성은 제로인것같았다. ㅋㅋㅋ


Tiny RTS(Real-Time Scanner)
[ 2005. 11. ~ 2006. - Visual C++ (Visual Studio 6) ]


Tiny RTS(Real-Time Scanner)(?) 리얼타임?ㅋㅋㅋ


2006년 삼성소프트웨어멤버쉽땜에 만들게 된 프로그램인데, 이후 학술제에도 내고 여기저기 내서 금전적이익(?)을 본 프로그램이다.
솔직히 정보보안에 대해 아무것도 모를때 만든 것이라, 지금 이 내용을 보면 어이가 없다. 하지만 1학년 말에 MFC를 배우면서 만든 것이라 나름 애착이 가는 프로그램이다.
이후 몇번의 업데이트(?)를 거처서 저런 모양이 나왔다. ㅎㅎㅎ
Winpcap 라이브러리를 이용하여 패킷을 캡쳐해서, 특정 포트에서 시그니처 검사를 해서 악성 코드의 패킷인지 검사하는 것인데...
어이없지 않은가? ㅋㅋㅋ 특정 포트에서 시그니처 탐지되서 바이러스나 웜이 있을 가능성(?)을 논하니까 말이다. ㅋㅋㅋ


DNC(Dotgabi New Certification)
[ 2006. ~ 2007. - Visual C++ (Visual Studio 6) ]


문제가 많은 ActiveX(!)


이 프로그램은 홈페이지의 취약한 Session을 보안하기 위해서 개발되었다. 나름 ActiveX와 각종 잔머리(?)를 이용하여, 만든 프로그램이다. 세션은 쿠키에 세션ID를 통해서 구분되는데, 쿠키 Sniffing을 통해 Spoofing하여 세션을 Hijaking하기 때문에 문제가 발생한다. 이런 것을 보안하기 위해 한 세션ID는 한 PC에서만 접속해야만 한다는 설정을 가지고 개발하였다. IP와 MAC주소와 SessionID를 서버에 저장해놓고, 다른 IP와 MAC 주소를 가진 PC가 특정 세션ID로 접속을 하면 서버에서 그 2개의 세션 파일을 삭제하여, 하이젝킹을 막을 수 있는 프로그램이다. 버그가 너무 많았다. ㅋㅋㅋ


WhiteWebScanner
[ 2006. ~ 2007. - C# (Visual Studio 2005) ]


WhiteWebScanner! 이때부터 White 시리즈가 시작됨ㅎㅎㅎ


이것도 역시 2006년에 만들어진 것인데, 위의 버전은 2007년 업데이트된 버전이다.
이 프로그램에서 나의 역할은 일종의 Assist였다.
메인이 아니었기에 할 이야기는 별로 없지만, Bruteforce 문자열을 만드는 부분을 프로그래밍했는데, 나름의 알고리즘(?)이 들어갔다.
C#으로 작성되었으며, 도급 공모전에서 대상(!)을 받은 작품이다. 물론 나는 주워먹기로 상을 탄 작품이다. 이후 학술제에서도 좋은 평가를 얻었다.


WhiteHat
[ 2007. ~ 2007. - Visual C++ (Visual Studio 6) ]


루트킷 치료 프로그램(WhiteHat)


이 프로그램은 루트킷(Rootkit)을 치료하는 프로그램인데, 공모전에 맞춰서 개발한 것이다.
실제 루트킷의 원리를 공부하고, 예제 루트킷을 만들고, 이 솔루션을 만들었다.
나의 공부법(http://fckorea.tistory.com/80)에서 언급된 프로그램인데, 에러도 많고 효율성이 떨어지기도 한다.
마지막에 급해서 오픈소스를 날조해서 만들기도 했지만, 이후 드라이버(DDK)로 프로세스 목록을 얻어 날조(?)에서 벗어 나는 툴을 만들기도 했다.

날조(?)에서 벗어나게 해준 GetProcessListEx


위 툴은 UserMode에서 프로세스 목록과 Kernel1(NativeAPI)를 통한 프로세스 목록, Kernel2(EPROCESS)를 직접 리스팅한 목록을 출력해준다.


WhiteDRM(Digital Rights Management)
[ 2008. ~ 2008. - Visual C++ (Visual Studio 2005) ]


WhiteDRM - Server.

WhiteDRM - Client.


이 프로그램은 단위가 좀 큰 프로그램인데, 서버와 클라이언트가 있다.
서버에선 클라이언트 접속에 의해 어느 IP에서 어떤 사용자가 로그인해서 DRM이 걸린 문서를 보는지 알 수 있는 프로그램이다.
클라이언트는 FileSystem후킹에 의해 특정 확장자의 파일을 암호화해서 저장하고, 읽어 온다. 서버는 이러한 것들을 관리하고 로그를 남겨놓는다.
WhiteHat 이후로 계속 커널로 접근해서 프로젝트 구상에 나섰다.
이 프로그램은 대기업에서 많이 사용하고 있는 DRM을 나름의 발상으로 만들어 봤다. (사실 회사에서 사용하는 DRM프로그램을 본적도 없다)


WhiteKISS(Keyboard Information Security Solution)
[ 2008. ~ 2008. - Visual C++ (Visual Studio 2005) ]


White KISS -3-


이 프로그램은 금융보안연구원에서 인턴할 때 배웠던 Keyboard Polling을 이용한 키보드 보안 프로그램이다. 나름 가장 많은 공을 들인 프로그램같다. 아마 4학년 마지막 작품이라서 그런지도 모르겠다. 은행이나 게임 등의 키보드 보안 프로그램은 그 프로그램에만 키보드 정보를 보호하지만 이 프로그램은 프로세스 단위로 보호를 한다.
최종 개발 버전에서는 메모장과 Internet Explorer만 보호를 한다. 한글도 보호하기 위해 오토마타가 적용되었다. 다른 프로세스도 보호하고 싶었지만, 조금씩 다른 한글 입력을 적용하고 있었다(예: 한글, 네이트온). 하지만 나름 완성도가 높은 프로그램이다(가끔 나조차 신기해서 쓰곤한다).



이 외에도 개인적으로 만든 프로그램이 많지만, 개인적으로 만든것은 다음에 블로깅하도록 하겠다.
아래는 각 프로그램의 About !

LED (Learn English Dotgabi)

WhiteWebScanner

WhiteHat

WhiteDRM

WhiteKISS