본문 바로가기

Trojan:Win32/Kovter Trojan:Win32/Kovter Kovter는 감염 후 file-less 방식으로 동작하도록 설계된 멀웨어. 트로젠이라 스스로 감염 시킬 수 없으므로 click fraud를 유도함. 트로젠은 스스로 퍼질 수 없는 멀웨어를 말함. 사용자의 실수에 의존함(악성 웹사이트에 방문한다던지.. )감염 후 정보 탈취, 다른 악성코드 다운, pc 접근권을 준다던지 등의 각종 악성행위를 수행함. microsoft security blog를 참조해 정리하자. 1. 랜덤한 확장자 등록 (백신 탐지를 어렵게 하기 위해)랜덤한 확장자를 레지스트리에 등록하고, 해당 확장자 파일을 open 시 확장자\shell\open\command 에 등록된 명령이 실행된다. 내용은 클린 파일인 mshta을 이용하여 자바스크립트를 실행시키는..
ADODB.STREAM object ADODB.STREAM object The ADODB.Stream object was used to read files and other streams. What it does is part of what the StreamReader, StreamWriter, FileStream and Stream does in the .NET framework.For what the code in that method uses it for, in .NET you would use a StreamReader to read from a Stream.문자를 읽을 때 byte 단위로 사용하므로 non-Unicode data를 포함하는 stream에서 제대로 동작함.
[Swift 기초] switch case 문 [Swift 기초] switch case 문 switch- case문도 C언어와 크게 차이 없다. 다만 C 언어에서는 case마다 종료 시 break 명령어를 적어줬어야 했다.적어주지 않을 경우에는 다음 case에 해당하는 명령어까지 실행하는 fallthrough가 자동으로 적용된다. Swift에서는 fallthrough를 기본으로 지원하지 않으므로 Case마다 break를 적을 필요가 없다.대신 falltrhough 되기를 원한다면 case에 fallthrough 명령어를 써줘야 한다. range로도 case를 줄 수 있다. 예아!쉼표를 이용해서 하나의 케이스에 여러 값 두기 Swift에서는 쉼표를 이용하여 하나의 케이스에 여러 값을 둘 수 있다. (...를 이용한 연속적인 값이 아니라도 되는군!) 여..
[Swift 기초] while, repeat while 문 [Swift 기초] while, repeat while 문 C 언어와 워낙 유사해서 따로 다룰 게 딱히 없다. while 반복조건 {조건 성립 시 수행할 명령어들} repeat{수행할 명령어들} while 반복조건 여기서 while과 repeat while의 결과는 동일하다. while과 repeat while의 차이는 무엇일까?while : 반복문 시작 시, 조건이 성립하지 않는다면 애초에 실행도 안함repeat while : 반복문 시작 시 일단 실행시키고 봄. 따라서 조건에 안맞더라도 최소한 1번은 실행됨.
힙 손상 탐지(2-2) - 힙 오버런, 언더런 (Full PageHeap) 힙 손상 탐지(2-2) - 힙 오버런, 언더런 (Full PageHeap)힙 손상 탐지(2-1) - 힙 오버런, 언더런 (Normal PageHeap) 를 먼저 읽고 보자. gflags를 이용한 풀 페이지힙 적용 방법gflags.exe /p /enable /full/p : 페이지 힙/enable : 특정 옵션을 킴/full : 풀 옵션으로~! [ 풀 페이지 힙 - 할당 ][시나리오]1) 0x30 크기만큼의 힙을 할당 / 해제.2) Full PageHeap 적용 후 windbg에서 분석 1) 0x30 크기의 힙을 요청에 성공하고2) EAX에 유저 영역 시작 주소를 반환 받았다. 명령어 : !address 할당받은 0x30크기의 힙을 !address로 봤더니 Heap이 아닌 PageHeap으로 뜨는 것을 볼..
힙 손상 탐지(2-1) - 힙 오버런, 언더런 (Normal PageHeap) 힙 손상 탐지(2-1) - 힙 오버런, 언더런 (Normal PageHeap) 힙 버퍼 오버플로우. 참 많이 접해 본 단어이다.할당된 공간을 넘어서 인접한 다른 힙 청크를 덮어쓰는 것 뿐인데 어떤 문제를 야기할 수 있을까?예를 들어보자.덮어써진 힙에서 참조한 값으로 출발지 힙의 크기를 계산하여 소스힙을 할당한다던지 -> 또 다른 버퍼오버플로우 유발 가능.덮어써진 영역이 가상함수 테이블이라면..? -> 가상함수 호출 시 EIP가 제어됨. 띠용?!메타데이터가 변조되어 링크가 엉뚱한 곳을 가리키고, 이후 힙 할당/해제 시에 문제를 유발할 수 있음.결론적으로 취약점을 정교하게 잘 악용한다면 프로그램의 실행흐름(EIP)도 가져올 수 있다는 얘기다. 힙 버퍼 오버플로우는 스택과 다르게 원인이 되는 부분과 한참 떨어..
힙 손상 탐지(1) - 초기화 안 된 상태로 사용 힙 손상 탐지(1) - 초기화 안 된 상태로 사용 공간을 할당했으면 초기화를 하고 사용해야함.포인터 변수를 다뤄봤다면 알겠지만, 뭐가 들었을 지 알고 초기화도 안하고 사용하나?! 1) 할당만 받고 초기화 하지 않은 채 사용한다면 문제가 발생할 수 있으므로 잡아야한다.2) Free 한 이후에도 사용하는 것은 문제를 야기할 수 있고 정상적인 사용방법이 아니다.스택은 문제를 야기하는 원인 근처에서 크래시가 발생하므로 추적이 쉬움.힙 문제는 원인과 결과가 한참 차이나는 경우가 많음 (변조는 이미 되었으나 오류 발생은 실제 사용 시점에서 발생하므로)Crash 시점부터 백트레이스는 너무 많은 비용 소모, 힙 손상이 발생 시점에 트랩하자.대안: 디버깅 하에서 실행 시 채움 패턴 사용.(디버거 하에서 프로세스를 시작한..
힙의 세부 항목 조회 힙의 세부 항목 조회 힙 주소를 얻었으면 조회를 해봐야지.명령어 : dt _HEAP 0:000> dt _heap 00500000ntdll!_HEAP +0x000 Entry : _HEAP_ENTRY +0x008 SegmentSignature : 0xffeeffee +0x00c SegmentFlags : 0 +0x010 SegmentListEntry : _LIST_ENTRY [ 0x5000a8 - 0x5000a8 ] +0x018 Heap : 0x00500000 _HEAP +0x01c BaseAddress : 0x00500000 Void +0x020 NumberOfPages : 0x100 +0x024 FirstEntry : 0x00500588 _HEAP_ENTRY +0x028 LastValidEntry : 0..