posted by 블르샤이닝 2014. 4. 21. 19:08
728x90

vb를 분석할때 방법.

 

DllFunctionCall 주소에서 함수마다 호출되는거 찾아들어가게되면 해당 파일에서 쓰이는 라이브러리 및 내용들을 확인할 수 있다.

 밑에 그림처럼 00401250에서 올리로 해당 부분에 bp걸고 간다음 분석을 진행하면 된다.

 

 

728x90
posted by 블르샤이닝 2014. 4. 17. 15:50
728x90

학교 운영체제 시간에 열심히 해둘껄.....아우 아우...그래도 조금은 수업을 들어서 그런지 이해는된다;

 

출처 : https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CEUQFjAC&url=http%3A%2F%2Fninako21.tistory.com%2F500&ei=bnZPU7rSMYOl8AXKhoK4DA&usg=AFQjCNEZR16BadFY7KWZXz6OC2PV5js_PQ&sig2=jfJ0cPcImHKfQw8vBkeqKA&bvm=bv.64764171,d.dGc&cad=rjt

---------------------------------------------------------------------------------------------

저장한 pdf :  https://drive.google.com/file/d/0B4fxnIet58UxcUFUeUtPU0Flc2M/edit?usp=sharing

 

<동기화>
리눅스 커널은 동기화와 독점적인 접근을 허용하기 위해 다양한 방법을 사용하고 있다. 여러 프로세스가 동일한 자원을 조작할 경우에 세마포어를 이용하는 것이 편리하다. 멀티 프로세서 환경에서 여러 CPU가 동시에 참조하는 테이블을 보호하기 위해서는 스핀락(spin lock)을 이용하는 것이 가장 일반적이다.

<뮤텍스(Mutex)란?>
MUTual EXclusion 으로 상호배제라고도 한다.
Critical Section을 가진 스레드들의 Runnig Time이 서로 겹치지 않게 각각 단독으로 실행되게 하는 기술이다. 다중프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 locking과 unlocking을 사용한다.
즉, 쉽게 말하면 뮤텍스 객체를 두 스레드가 동시에 사용할 수 없다는 의미이다.

 

<세마포어(Semaphore)란?>
세마포어는 리소스의 상태를 나타내는 간단한 카운터로 생각할 수 있다. 일반적으로 비교적 긴 시간을 확보하는 리소스에 대해 이용한다. 유닉스 시스템의 프로그래밍에서 세마포어는 운영체제의 리소스를 경쟁적으로 사용하는 다중 프로세스에서 행동을 조정하거나 또는 동기화 시키는 기술이다. 세마포어는 운영체제 또는 커널의 한 지정된 저장장치 내 값으로서, 각 프로세스는 이를 확인하고 변경할 수 있다. 확인되는 세마포어의 값에 따라, 그 프로세스가 즉시 자원을 사용할 수 있거나, 또는 이미 다른 프로세스에 의해 사용 중이라는 사실을 알게 되면 재시도하기전에 일정 시간을 기다려야만 한다. 세마포어는 이진수 (0 또는 1)를 사용하거나, 또는 추가적인 값을 가질 수도 있다. 세마포어를 사용하는 프로세스는 으레 그 값을 확인하고, 자원을 사용하는 동안에는 그 값을 변경함으로써 다른 세마포어 사용자들이 기다리도록 해야한다.

- 프로세스 간 메시지를 전송하거나 혹은 공유 메모리를 통해서 특정 데이터를 공유하게 될 경우 발생하는 문제는 공유된 자원에 여러 프로세스가 접근하면서 발생하다. 하나의 프로세스만 접근을 가능하도록 해야할 때 세마포어를 사용한다.

- 바이너리 세마포어랑 세마포어의 값이 0과 1만을 지니도록 구현된 세마포어를 말한다.

 

<* 뮤텍스와 세마포어의 차이점>
- 세마포어는 뮤텍스가 될 수 있지만 뮤텍스는 세마포어가 될 수 없다.
- 세마포어는 소유할 수 없는 반면 뮤텍스는 소유가 가능하며 소유주가 이에 대한 책임을 진다.
- 뮤텍스의 경우 뮤텍스를 소유하고 있는 쓰레드가 이 뮤텍스를 해제할 수 있다. 하지만 세마포어의 경우 이러한 세마포어를 소유하지 않는 스레드가 세마포어를 해제할 수 있다.
- 세마포어는 시스템 범위에 걸쳐있고 파일시스템상의 파일 형태로 존재한다. 반면 뮤텍스는 프로세스 범위를 가지며 프로세스가 종료될 때 자동으로 clean up된다.


★★★ 가장 큰 차이점은 관리하는 동기화 대상이 갯수이다.
뮤텍스는 동기화 대상이 오직 하나뿐일 때, 세마포어는 동기화 대상이 하나 이상일 때 사용한다.

728x90

'시스템 해킹' 카테고리의 다른 글

WinDbg_cmds  (0) 2021.02.03
SEH를 이용한 시스템 쉘 코드 실행  (0) 2015.05.27
힙 스프레이 공격  (0) 2014.03.31
UAC 우회  (0) 2014.01.29
GetLogicalDrives 값  (0) 2013.08.05
posted by 블르샤이닝 2014. 4. 17. 11:27
728x90

악성코드에서 자신의 프로세스를 관리자의 권한으로 상승시키기위해 쓰이는 코드로 생각되며, 해당 api 쪽에서 CreateWellKnownSid, EqualSid 두가지 함수를 잘 봐야할것같다...사실 잘 모르는 함수;;ㅎㅎ 이 두개 머지..ㄷㄷ 하며 검색

 

 

아래 다음과 같은 내용을 참조하여 추측한다.

(참조 url : http://ddiggam.tistory.com/130)

 

-----------------------------------------------------------------------------------------

 

다음 내용은 윈도우즈 환경에서 "권한상승의 형태와 관리자 권한으로 수행되었는지의 여부를 확인하는 방법"에 대해서 설명하고 있습니다.

#include <stdio.h>
#include <windows.h>
#include <shlobj.h>                  // for IsUserAnAdmin() function.
#pragma comment(lib, "shell32.lib")  // for IsUserAnAdmin() function.

BOOL GetProcessElevation(TOKEN_ELEVATION_TYPE *pElevationType, BOOL *pIsAdmin)
{
    HANDLE hToken = NULL;
    BOOL bResult = FALSE;
    DWORD dwSize = 0;

    // 현재 프로세스의 토큰을 얻는다.
    if ( !OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken) )
        return FALSE;

    // 권한상승 형태에 대한 정보를 얻는다.
    if ( GetTokenInformation(hToken, TokenElevationType, pElevationType, sizeof(TOKEN_ELEVATION_TYPE), &dwSize) )
    {
        BYTE adminSID[SECURITY_MAX_SID_SIZE];
        dwSize = sizeof(adminSID);
        
        // 관리자 그룹의 SID 값을 생성한다.
        CreateWellKnownSid(WinBuiltinAdministratorsSid, NULL, &adminSID, &dwSize);

        if ( *pElevationType == TokenElevationTypeLimited )
        {
            HANDLE hUnfilteredToken = NULL;
            
            // 연결된 토큰의 핸들을 얻는다.
            GetTokenInformation(hToken, TokenLinkedToken, (void *)&hUnfilteredToken, sizeof(HANDLE), &dwSize);

            // 원래의 토큰이 관리자의 SID를 포함하고 있는지 여부를 확인한다.
            if ( CheckTokenMembership(hUnfilteredToken, &adminSID, pIsAdmin) )
                bResult = TRUE;
            
            CloseHandle(hUnfilteredToken);
        }
        else
        {
            *pIsAdmin = IsUserAnAdmin();
            bResult = TRUE;
        }
    }

    CloseHandle(hToken);
    return bResult;
}

int main(int argc, char **argv)
{
    TOKEN_ELEVATION_TYPE t;
    BOOL bAdmin = FALSE;
    char szUser[0xFF] = {0};
    DWORD dwUser = _countof(szUser);
    GetUserName(szUser, &dwUser);

    if ( GetProcessElevation(&t, &bAdmin) )
    {
        if ( bAdmin )
            printf("%s is admin, ", szUser);
        else
            printf("%s is not admin, ", szUser);

        switch (t)
        {
        case TokenElevationTypeDefault:
            printf("기본 사용자이거나, UAC 기능이 OFF 된 상태임.\n");
            break;
        case TokenElevationTypeFull:
            printf("권한상승되었음\n");
            break;
        case TokenElevationTypeLimited:
            printf("필터된 토큰에 의해 제한된 권한으로 수행되었음.\n");
            break;
        default:
            break;
        }
    }

    return 0;
}


 

728x90

'리버싱' 카테고리의 다른 글

[진행중]MPRESS unpacking  (0) 2014.04.26
vb 분석할때 방법  (0) 2014.04.21
가상머신인지 확인하는 어셈코드  (0) 2014.04.07
PEcompect 언팩킹  (0) 2014.03.27
ASPACK 언팩  (0) 2014.03.24
posted by 블르샤이닝 2014. 4. 10. 09:02
728x90

모든 청약 아파트 주택에 대해 자세히 나와있음...나중에 임대주택 신청할때 참고


http://www.apt2you.com/

728x90
posted by 블르샤이닝 2014. 4. 7. 14:36
728x90

대학교때 공모전에 낸다고 아이디어 자고 만들고 찍고 편집하고 했었는데...

ㅋㅋ 5년전 이야기네...ㅋㅋㅋ 그래도 다시보니 재밌구나 ㅋㅋㅋ 나름 재밌게 생활했었구나 ㅋㅋ

나름의 우리의추억 ㅋㅋㅋ

 

728x90