Try Attack/Reverse Engineering[basic]25

[전지적해커시점] DLL Injection 안녕하세요. 여기 들어오신 분은 DLL injection이 궁금해서 들어오셨겠죠? 음... DLL Injection은 전지적 해커시점에서 보아야 합니다. 시작부터 무슨말이냐고요? 프로세스 하나를 보는 것이 아니고 어떤 프로세스가 어떤 프로세스에게 어떤 행위를 했다.. 그럼 무슨 일이 일어난다.. 그런데 이것을 왜? 할까.. 이런식으로 보자는 말이죠! 1. 상식알고가기 운전을 하려면 신호등 색이 의미하는 것을 알아야겠죠? DLL인젝션을 하기 전에도 알아야할 상식이 있답니다. [1] DLL(Dynamic Link Library)이란? ▶ 실행파일이 실행될 때 프로세스에 할당된 메모리에 함께 로드된다. [2] DLL의 특성 ▶ DLL은 메모리에 로드되면 DllMain을 실행한다. ▶ 이 말은 DLL을 프로세스.. 2020. 5. 3.
(키보드훔쳐보기) 메세지후킹/키로거제작 후킹이란 무엇일까요? 위키백과왈 "후킹은 소프트웨어 공학 용어로, 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다." 라고 합니다. 딱 봐도 나쁜기술로 보이네요. 쉬운 예로 조금 비싼?키보드에는 일반키보드에 없는 기능들이 있죠? volumn UP키, 잠금키 등은 원래 정의되어 있지 않기 때문에 키보드제조사에서 훅을 걸어놓고 특정한 키가 입력이 되었다면 원하는 동작을 하도록 재정의를 해준 것 입니다. 즉, 가로채서 변경한 것이죠! KVM스위치도 마찬가지입니다. 사용자가 키보드 입력을 할 때 특정 키가 입력이 되었다면 어떤 곳으로 보낼지 정의가 되어있는 것이지요! .. 2020. 3. 30.
PE파일 섹션 추가 및 삭제하기 종종 무언가를 하다보면 "나름대로 열심히했는데..." 되지 않을 때가 있죠? "나름대로"라는 말이 빠지고 "1분 1초도 아껴가며"라는 말이 들어가면 "1분 1초도 아껴가며 열심히 했는데..."가 되고 그러면 왠지 뭐든 될 것 같지 않나요? 하하 이와같이 PE파일에서도 필요없는 섹션은 제거하고 필요에 따라 섹션을 몇 개든 추가할 수 있답니다. 물론 한 바이트, 한 바이트 바이트수공업을 해야한다고 하면 포기하실수도 있으니 쉿,,, 전에 다룬 내용에서 .reloc섹션을 다루었으니 .reloc섹션을 지워보려고 합니다. exe파일은 제거해도 정상적으로 동작하지만 dll과 sys파일은 기본적으로 적재되는 위치가 정해져있기 때문에 실행되지 않을 가능성이 무지무지 높죠! 우선 .reloc섹션을 제거하기 위한 방법 1).. 2020. 3. 24.
PE재배치 화장실에 갔는데 말이죠! 앞사람이 계속 나오지 않는다면 어떻게 할까요? 다른 방법을 찾아봐야겠져? 실행파일도 마찬가지에요. 내가 메모리에 적재되어야 하는 장소에 다른 실행파일이 적재되어있다면 그 파일이 종료될 때까지 목빠지게 기다리다가 망부석이 될 가능성이 크지요. 망부석이 되면 안되기 때문에 다른 메모리장소(기준주소)를 얻어서 재배치 후 메모리에 적재가 됩니다. 파일이 메모리에 로딩될 때 재배치과정을 살펴보면 1) 하드코딩된 주소를 찾은 후 2) ImageBase만큼 뺍니다.(VA에서 RVA만 남겠죠?) 3) 실제 로딩된 ImageBase를 더해줍니다.(RVA에서 VA로 변경) 4) 그리고 메모리에 적재가 됩니다! 아 그런데 하드코딩된 주소는 누가 어떻게 찾냐구요? IMAGE_NT_HEADER - IM.. 2020. 3. 23.
EasyCrackMe - reversing.kr 처음에는 어떤 것도 나와 맞지 않는 것 같지만.. 어떤 것이든 도전해보세요! 자석도 N극과 S극이 끌리듯이 나와는 맞지 않다고 생각했던 것도 반복하다보면 어느순간 가까워져 흥미를 느끼고 있는 분야를 발견할지도 몰라요. 우선 reversing.kr의 EasyCrackMe부터 들여다보겠습니다. 1. 정적분석 1) 기초정보확인 Type이 PE인 것을 보니 32비트 exe파일이네요. EntryPoint(ImageBase+Address of entrypoint)는 0x401188 입니다. 총 4개의 섹션(text, rdata, data, rsrc)이 존재합니다. 나와있는 섹션에 대한 간단한 설명을 보태면 .text 섹션은 코드영역(명령어 서식지)이라고 보면 됩니다. [그림1]에서 ImageBase가 0x40000.. 2020. 3. 12.
main함수 위치를 찾는방법 가끔 목적지을 바라보지만 반대방향으로 가고있는 고장난 네비게이션(나)을 발견합니다. 분석할 때도 마찬가지입니다. 그래서! 바이너리 내에서 메인함수에 가기위한 이정표를 만들어볼까 합니다. 그 전에 분석을 하기 위해서는 분석 툴이랑 친해져야겠죠? 올리디버거와 이뮤니티 디버거의 단축키를 보겠습니다. 이정도만 익숙해지기로 하고 메인함수를 찾으러 갈게요. 메인함수로 가는 길 1. stub code를 지나기 stub code인지 아는 방법은 call을 만날 때마다 [F7]을 눌러서 들어가보고 실행되야 하는 함수가 보이지 않으면 [Ctrl + F9]를 눌러서 RETN까지 실행합니다. 7ip. 만약 CALL Kernel32.*가 있다면 우선은 패스하는 것을 권장합니다. 이유는 그 API의 내부 구현이 어떻게 되는지는 .. 2020. 3. 2.
PE 파일 포맷 사람을 볼 때 외면보다는 내면의 아름다움을 보는 것이 중요하다는 말이 있죠? 실행파일도 마찬가지랍니다. 겉에 보이는 아이콘과 파일명을 보지말고 실행파일의 내면(PE구조)를 보면 나쁜파일을 걸러내기 유리하겠죠? 이러한 마인드를 소유하고 계시다면 분석할 기본소양이 갖추어지셨다고 생각합니다. 구글에 "PE구조"라고 검색 후 이미지를 보면 ... ... 할 말을 잃죠.. "이것을 모르고 분석을 하면 어떨까?" 라는 생각을 하게 되죠? 그러나 프로그램을 실행시키면 메모리에 올라가서 프로세스가 됩니다. 프로세스에 로드할 때 어떻게 적재가 되는지도 알 수가 없습니다. 1) 어디서 시작하고 각 섹션별 위치나 크기정보를 알 수 없으며 결론은 해야한다는 말이 되겠네요.. 그러나 외우다가 지쳐서 분석은 해보지도 못할 가능성.. 2020. 1. 21.
파일을 입력받는 프로그램의 취약점분석 및 공격 어느새 Exploit을 작성하기 좋은 계절?인 겨울이 다가왔습니다. Exploit을 작성할 생각에 벌써 설레지만 이론부터 볼까요? 위 그림에 대해서 간단히 설명을 드리겠습니다. 시나리오 1) 인사담당자들 혹은 이력서와 같이 hwp확장자의 파일을 메일로 보내면? 이력서.hwp를 다운받고 더블클릭을 합니다. 이력서.hwp는 한글프로그램을 실행키면서 자신을 입력으로 넣습니다. 만약 이력서.hwp가 한글프로그램에 대한 payload이고? 확장자만 hwp라면? 어떨까요? 시나리오 2) 파일공유 사이트에 많은 사람들이 흥미로워 할만한 파일명으로 올린다. .mp4 등을 실행시키면 레지스트리에 등록된 플레이어가 실행되고 동영상파일이 입력으로 들어가겠죠. 이것도 확장자만 mp4이고 실제로는 플레이어의 취약점에 대한 공격.. 2019. 11. 12.
Virtual address 날씨가 많이 덥지만 시간은 정신없이 지나가네요.. 방학시즌이라 그런지 여러가지주제로 교육이나 컨퍼런스등이 많네요~ 19년 7월 9, 10, 11일 KISA 핀테크 기술지원센터에서 주최하는 git 교육으로 시작해서, 19년 7월 10일 블록체인 TechBiz 컨퍼런스와, 19년 7월 13일은 BOAZ에서 빅데이터컨퍼런스도 하고, 19년 7월 16일에 이스트시큐리티에서 2019 엔드포인트 보안컨퍼런스도 있구.. 19년 7월 16일에 KISA에서 사이버 빅데이터 교육 공통과정도 있네요.. 오늘이 7월 12일이니까.. 7월 16일에 이스트시큐리티의 컨퍼런스 대신 저는 빅데이터 교육을 들으러 가겠네요..ㅜㅡ 19년 7월 18일은 KISA 핀테크 기술지원센터에서 금융시장의 데이터를 빅데이터로 활용하는 방법에 대해 .. 2019. 7. 12.
위장 악성코드를 실행하는 방법 ※ OS : Windows환경의 악성코드 1. 위장 악성코드 ▶ 악성코드 제작자는 악성코드를 은닉하기 위해 여러가지 방법을 개발한다. ▶ 즉, 탐지를 우회하기 위해 위장 실행 기법을 개발한다. 2. Launchers(실행기) (1) Launcher란? [1] Loader라고도 부르며 현재 실행하고 있거나 추후에 (은밀하게) 실행하기 위해 자기자신이나 다른 악성코드를 설정하는 악성코드이다. [2] 편의상 exploit이라고 생각하려고 한다. (2) Launcher가 필요한 이유? [1] 나쁜 짓 할 때 사용자에게 걸리지 않으려고? 설정하기 위해서..ㅎ (3) Launcher가 로딩할 악성코드를 포함한 경우 [1] .exe파일이나 .dll을 자신의 resource section에 가지고 있다. [2] PE파.. 2019. 5. 31.
MFC_reversing 1. MFC(1) Visual Studio의 c++로 만들어지고 UI가 있는 프로그램을 리버싱할 경우 MFC로 개발된 프로그램을 리버싱할 가능성이 높다,(2) 이 말은 리버싱을 하기 위해서는 MFC의 구조를 알아야 한다는 것을 의미하지 않을까?(3) MFC(Microsoft Foundation Classes)란? [1] 통합개발환경을 위한 Visual C++에 부속되는 클래스 라이브러리이다. [2] 객체지향 프로그래밍을 기반으로 윈도우 애플리케이션 개발에 적합한 환경으로 제공되는 프레임워크이다. [3] 쉽게 말해 API로 개발 시 같은 일을 반복하지 않기 위해, 유사한 내용은 사전에 클래스로 만들어 놓고 제공하는 라이브러리이다. 2. MFC의 구조(1) 메세지 처리방식 [1] MFC는 객체지향의 특성을 .. 2019. 5. 26.
[codegate_2017] angrybird 1. 문제풀이 (1) 실행결과 [1] './angrybird'와 같이 그냥 실행하면 반응이 나오지 않는다. [2] './angrybird abcd'와 같이 인자를 넣고 실행해도 반응이 나오지 않는다. [3] './angrybird abcd $(python -c 'print "a"*0x100')와 같이 오버플로우를 예상하고 실행해도 아무런 반응이 나오지 않는다. (2) start 함수 [1] 현재 화면은 'angrybird'바이너리를 IDA에 올릴 때 가장먼저 나오는 화면이고 start함수이다. [2] 이후 main함수를 첫 번째 파라미터에 넣고 호출하는 부분이 보인다. [3] main을 더블클릭해서 이동한다. (3) main함수 [1] 프롤로그부터 보면 쭉 가다가 종료하는 부분이 조금 이상하다. [2] .. 2019. 4. 8.