이메일을 적으시면 보안관련 소식을 받을수 있습니다.
이메일:

안녕하세요^^, CrefunX입니다.
새로운 한주를 잘 보내고 계시는지 모르겠습니다.

2번째 글은 어떤걸 써볼까 생각하다가 문득 책장에 있는
Application Hacking 이라는 책의 내용중에 요약을 해볼까 합니다.

클라이언트 개발시에 설계과정부터 보안을 고려해서 디테일한 부분을 신경을 쓴다면
보다 안정한 클라이언트를 개발할 수 있을꺼라 생각이 듭니다.

리버서를 구분짓는다면 고급 수준의 리버서와 초급 수준의 리버서를 생각할 수 있습니다.

여기서 이야기 하는 내용은 인터넷에서 쉽게 구할수 있는 툴을 이용해서 클라이언트를 해킹하는
초급 리버서에 대한 공격을 사전에 방어할 수 있는 여러가지 방법을 이야기 하고 있습니다.

1. 모든 문자열에 대한 외부에서 암호화하거나 인코딩을 거친상태로 코드적용하고 사용될 때
    복호화 해서 사용하는 방식으로 사용해야 한다. 
    디버거를 사용해서 모듈 내부에서 참조하고 있는 모든 문자열을 확인할 수 있으며 프로그램 구조를
    알수 있는 유용한 정보가 된다.


2. 함수 이름을 정할때 자세한 기능을 명시하지 않고 포괄적인 이름을 사용해야 합니다.
    DLL의 경우에는 함수 이름을 확인하는 것만으로도 기능을 예측할 수있으며 해커 역시 공격을 쉽게 할 수 있게 
    만들어주는 근거를 제공을 하게 만들어 줍니다. 

3. 클라이언트 배포시에는 디버그 코드를 배제된 배포본으로 진행해야 합니다. 
    디버깅 정보가 포함이 되어있으면 해커들이 보다 분석을 용이하게 되며 공격지점을 쉽게 예측할 수 있는 여지를 
    만들어주게 됩니다. 


4. 프로그램 설정과 메시시박스를 최대한 제한적으로 사용해야 합니다.
    해커는 프로그램 동작 방식을 기반으로 취약점을 찾을 수도 있을 것입니다.

5. 중요한 데이터에 대해서는 사용이 되기전까지는 내용을 확인할 수 없도록 변경시켜서 저장하고 있어야 합니다. 
    데이터들의 중요성을 구분하지 않고 메모리에 그대로 저장을 해두면 인터넷에서 쉽게 구할수 있는 메모리변조툴로
    간단하게 해킹이 가능해 집니다.   

6. 중요처리를 클라이언트 단이 아닌 서버 단에서 직접 처리를 하도록 설계해야 합니다.
    클라이언트 단에서 아무리 보안을 하더라도 오픈환경에서의 클라이언트는 뚫릴수 밖에 없습니다. 
   
7. 상용 패커(WinLicense, Themida, VMProtect, Armadillo 등등)를 적용한다면 한층 더 보완을 할수 있을 것이다. 
    하지만 무분별하게 패커를 적용하게 되면 클라이언트가 무거워지거나 알수없는 에러가 발생할 수도 있으니 충분한
    테스트와 필요한 부분만 적용해야 할 것입니다.


마지막으로 철저한 코드리뷰와 내부적인 QA 프로세스를 통해서 실제 배포본이 나가기 전에 한번 더 필터링을 해주면 보다 안전한 프로그램이 될수 있을 것입니다.

해킹과 보안은 흔히 비유를 들면 창과 방패의 싸움이라고 합니다.. 완변한 보안은 없으며 앞으로도 취약점이 생기고
거기에 따른 보안방법과 최신 해킹방법을 계속적으로 발전을 해갈 것입니다.

그러므로 항상 최신의 해킹 기법과 대응방법을 배우며 연구해야 할 것이다.

- 출처 : Application Hacking(북앤라이프)
****************************************************************************************************

본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..

****************************************************************************************************

Posted by 알 수 없는 사용자
,