Gossip2008/09/12 13:58

민족 최대의 명절 한가위가 다가왔습니다.
여러분 모두 가족과 함께 즐거운 시간 보내시길 바랍니다.
저도 가평에서 맛있는거 많이 먹고, 부모님께 효도하고 심기일전해서 올라오겠습니다.

추석이 지나고 더욱 힘을 내 달리겠습니다.
화이팅!

Posted by 아이렌

Leave your greetings.

  1. 훗훗 이번 한가위땐 제발 좀... 살찌지만 말아야 겠습니다.

    2008/09/12 14:09 [ Permalink : Modify/Delete : Reply ]
  2. nwow

    모두들 즐추하세용~ㅎㅎ

    2008/09/14 01:33 [ Permalink : Modify/Delete : Reply ]

Research2008/09/11 14:40



Jeheon Han, Jonghoon Kwon, Heejo Lee, "HoneyID : Unveiling Hidden Spywares by Generating Bogus Events", IFIP Int'l Information Security Conference (IFIP SEC), Vol. 278, pp. 669-673, Sep. 9. 2008.

A particular type of spyware which uses the user’s events covertly, such as keyloggers and password stealers, has become a big threat to Internet users. Due to the prevalence of pywares, the user’s private information can easily be exposed to an attacker. Conventional
anti-spyware programs have used signatures to defend against spywares. Unfortunately, this mechanism cannot detect unknown spywares. In this paper, we propose a spyware detection mechanism, called HoneyID, which can detect unknown spywares using an enticement strategy. HoneyID generates bogus events to trigger the spyware’s actions and then detects hidden spywares among running processes which operate abnormally.We implemented the HoneyID mechanism as a windows based, and evaluated it’s effectiveness against 6 different known spywares(3 keyloggers and 3 ftp password sniffers). From this study, we show that the
HoneyID can be effective to detect unknown spywares with high accuracy.
Posted by Getroot

Leave your greetings.

Research2008/09/11 13:29



웹 취약점의 목록과 그 개요를 정리한 자료입니다.


Injecting Malicious Data

  • Parameter Tampering
  • URL Tampering
  • Hidden Field Manipulation
  • HTTP Header Manipulation
  • Cookie Poisoning
  • Executable File Upload

Exploiting Unchecked Input

  • SQL Injection
  • Cross-site Scripting
  • HTTP Response Splitting
  • Path Traversal
  • Command Injection
Posted by Getroot

Leave your greetings.

Research2008/09/11 13:18



[제작자 : AccessDenied]

1. 제목
    MDB (MS Access DB) 제어 클래스 0.1

2. 형태
    Class

3. 내용
    MDB 파일을 생성하거나 MDB에 접속하여 SQL Query를 실행할 수 있는 클래스 입니다.
리소스 자동 해제 및 exception이 wrapping 되어 있기 때문에 return value 만을 참고하여 error handling이 가능합니다.
또한 유니코드를 지원하도록 제작되었기 때문에 별도의 수정 없이 Windows platform 기반의 Visual Studio project에서 적용 가능합니다.

4. 환경
    OS : Windows 개열
    개발툴 : MFC

5. 사용법
    (1) InitInstance와 같은 시작 부분에 if(FAILED(::CoInitialize(NULL))) { ... } 와 같이 COM을 초기화
    (2) MDB 생성 시 Create("파일이름")
    (3) MDB에 접속 시 Open("파일이름")
    (4) MDB에 접속된 상태에서 Query를 이용한 데이터 편집은 Query("Query String")
    (5) SELECT 쿼리 후 데이터 조회 예시
CMDBManager MDB;
FieldPtr pField;

if(MDB.Open(_T("C:\\1.mdb")) == TRUE)
{
if(MDB.Query(_T("SELECT * FROM Table1")) == TRUE)
{
while(MDB.IsDataAvailable() == TRUE)
{
pField = MDB.FetchField(0);

printf(_T("%d\n"), MDB_FIELD_GET_INTEGER(p));

MDB.NextData();
}
}
}

    (6) 클래스 기능 모음

// 해당 Field가 NULL인지 체크
MDB_MANAGER_IS_FIELD_NULL(pField)
// 해당 Field 값을 LPCSTR 형태로 추출
MDB_MANAGER_FIELD_GET_LPCSTR(pField)
// 해당 Field 값을 Integer 형태로 추출
MDB_MANAGER_FIELD_GET_INTEGER(pField)
// 해당 Field 값을 Float 형태로 추출
MDB_MANAGER_FIELD_GET_FLOAT(pField)

// 새로운 MDB 파일 생성
BOOL Create(LPCTSTR pszFileName);
// MDB 파일 접속
BOOL Open(LPCTSTR pszFileName);
// MDB 파일 접속 해제
BOOL Close();
// SQL Query
BOOL Query(LPCSTR pszQuery);
// SELECT 와 같은 Query 후 데이터가 남아 있는지 확인
BOOL IsDataAvailable();
// 다음 데이터로 이동
BOOL NextData();
// nColIndex번째 column data를 얻어옴
FieldPtr FetchField(int nColIndex);
// 해당 nColIndex field가 NULL인지 체크
BOOL IsFieldNull(int nColIndex);
// MDB에 접속되어 있는지 확인
BOOL IsConnected();
// Recordset를 얻어옴
const _RecordsetPtr GetRecords();
// 구해진 데이터의 Field 개수를 얻어옴
long GetFieldCount();
// 해당 Field의 타입을 얻어옴
MDB_MANAGER_FIELD_TYPE GetFieldType(FieldPtr pField);

6. 기타
    GetFieldType()의 경우 현재까지 얻어온 데이터를 추측하여 값을 결정하기 때문에 정확하지 않을 수 있음.
Posted by Getroot

Leave your greetings.

Research2008/09/11 13:17



[제작자 : Getroot]

1. 제목
    Console로 메시지 출력 Version 0.2

2. 형태
    Class

3. 내용
    디버깅 시 유용하게 사용할 수 있는 Console class 입니다.
    헤더를 Include 하는 것 만으로 Console에 원하는 Message를 출력할 수 있습니다. 

4. 환경
    OS : Windows 개열
    개발툴 : MFC

    기타 : Unicode 지원


5. 사용법
    (1) stdafx.h 에 Console.h Include
    (2) Entry point(예: InitInstance)에 CONSOLE.Create("상단 바 제목"); 호출
    (3) 이 후 어떤 곳에서든지, PRINT("내용") 으로 메시지 출력
    (4) PRINTPOINT("내용")으로 색이 있는 글자를 출력
    (5) 클래스 기능 모음

#define CONSOLE CConsole::GetConsole()
#define PRINT CONSOLE.OutputText
#define PRINTPOINT CONSOLE.OutputPointText

// 콘솔을 생성한다.
BOOL Create(const char *szTitle);
// 콘솔을 해지한다.
void Close(void);
// 타이틀을 설정한다.
void SetTitle(const char* szTitle);
// 텍스트를 출력한다.
void OutputText(const char* szOutput, ...);
// 중요한 텍스트를 출력한다. (빨간색)
void OutputPointText(const char* szOutput, ...);
// 색을 설정한다.
void SetColor(WORD wColor = NULL);
// 콘솔을 보이거나 숨긴다.
void Show(BOOL bShow = TRUE);
// 콘솔의 내용을 모두 삭제한다.
void Clear(void);
// 콘솔 시스템 메뉴의 X를 사용못하게 한다.
void DisableClose(void);
Posted by Getroot

Leave your greetings.

Research2008/09/11 13:13



[ 제작자 AccessDenied ]

1. 제목
    Monitor 열거 클래스 0.1

2. 형태
    Class

3. 내용
    사용자의 시스템에 존재하는 모니터의 개수나 영역을 구할 때 사용되는 클래스 입니다.

4. 환경
    OS : Windows 개열
    개발툴 : MFC

5. 사용법
    (1) UpdateList() 하여 모니터 목록을 작성
    (2) GetMonitor(<Monitor ID>)를 이용하여 해당 모니터의 HMONITOR를 구하여 다른 Windows API를 이용함으로써 응용 가능
    (3) GetMonitorRect(<Monitor ID>, <CRect Pointer>)를 이용하여 해당 모니터의 영역을 구할 수 있음
    (4) GetMonitorWorkRect(<Monitor ID>, <CRect Pointer>)를 이용하여 해당 모니터 내에서 사용할 수 있는 실제 영역을 구할 수 있음
    (5) 예시
CMonitorManager mm;
CRect rc;

mm.UpdateList();
mm.GetMonitorWorkRect(0, &rc);
printf("monitor1: %d %d %d %d\n", rc.left, rc.top, rc.right, rc.bottom);

mm.GetMonitorWorkRect(1, &rc);
printf("monitor2: %d %d %d %d\n", rc.left, rc.top, rc.right, rc.bottom);

    (6) 클래스 기능 모음

// 모니터 목록 작성
BOOL UpdateList();
// dwIndex번째 모니터의 핸들 구함
HMONITOR GetMonitor(DWORD dwIndex);
// dwIndex번째 모니터의 영역(일반적으로 모니터의 해상도) 구함
BOOL GetMonitorRect(DWORD dwIndex, CRect *prcRect);
// dwIndex번째 모니터 내에 사용할 수 있는 영역(작업표시줄 및 기타 등등 영역을 제외한 work-area)
BOOL GetMonitorWorkRect(DWORD dwIndex, CRect *prcRect);
// 모니터의 개수를 구함
DWORD GetCount();

6. 기타
    모니터의 상황은 수시로 갱신될 수 있으므로 이 클래스를 사용하여 모니터를 조회하기 전에는 반드시 UpdateList()를 해야함.
Posted by Getroot

Leave your greetings.

Research2008/09/11 13:10



[ 제작자 Getroot]

1. 제목
    Excel Automation C++ Library 0.2

2. 형태
    Class

3. 내용
    Excel을 자동으로 제어할 수 있는 라이브러리 입니다.

4. 환경
    OS : Windows 개열
    개발툴 : MFC

5. 사용법

// 인스턴스를 초기화하고 엑셀 객체를 생성한다.
BOOL CreateExcel(void);

// Sheet 이름을 구한다.
BOOL GetSheetName(DWORD dwSheetNumber, TCHAR *pwsSheetName);
// Sheet 이름을 변경한다.
BOOL ChangeSheetName(DWORD dwSheetNumber, TCHAR *pwsSheetName);
// Sheet 갯수를 구한다.
DWORD GetSheetCount(void);
// Sheet를 추가한다.
BOOL AddSheet(TCHAR *pwsSheetName);
// Sheet을 선택한다.
BOOL SetActiveSheet(INT nSheetNum);

// 인스턴스를 초기화하고 파일을 오픈한다.
// fMode : CREATE_EXCEL_FILE, OPEN_EXCEL_FILE
BOOL OpenExcelFile(WCHAR *wsFileName, INT fMode);
// 파일을 닫고 인스턴스를 종료한다.
BOOL CloseExcelFile(void);
// 파일을 저장한다.
BOOL SaveExcelFile(void);

// Excel 창을 띄운다.
BOOL SetVisible(BOOL fOn=TRUE);

// Sheet을 선택한다.
BOOL SetActiveSheet(INT nSheetNum);

// Data를 읽어온다.
BOOL GetData(DWORD dwX, DWORD dwY, WCHAR *pwsOut, DWORD dwBufferLen);
BOOL GetData(INT nSheetNum, DWORD dwX, DWORD dwY, WCHAR *pwsOut, DWORD dwBufferLen);
// 다음칸의 데이터를 읽는다. 데이터가 비어있다면 FALSE 리턴
// fDirection: UPPER, BOTTOM, LEFT, RIGHT
BOOL GetNextData(INT fDirection, WCHAR *pwsOut, DWORD dwBufferSize);

// Data를 쓴다.
BOOL SetData(DWORD dwX, DWORD dwY, WCHAR *pwsInput);
BOOL SetData(INT nSheetNum, DWORD dwX, DWORD dwY, WCHAR *pwsOut);
// 다음칸에 데이터를 쓴다.
// fDirection: UPPER, BOTTOM, LEFT, RIGHT
BOOL SetNextData(INT fDirection, WCHAR *pwsInput);

// 검색
// pwsSeed : 검색할 단어
// pwsResult : 검색된 문장
// pdwX, pdwY : 검색된 위치

// Active page 전체를 검색
BOOL SearchAll(WCHAR *pwsSeed, WCHAR *pwsResult, DWORD &pdwX, DWORD &pdwY);
// 지정된 dwX나 dwY 좌표를 검색
BOOL SearchX(DWORD dwX, WCHAR *pwsSeed, WCHAR *pwsResult, DWORD &pdwX, DWORD &pdwY);
BOOL SearchY(DWORD dwY, WCHAR *pwsSeed, WCHAR *pwsResult, DWORD &pdwX, DWORD &pdwY);
// 다음 찾기
BOOL SearchNext(WCHAR *pwsResult, DWORD &pdwX, DWORD &pdwY);

// Active range 구하기
BOOL GetActiveRange(DWORD &pdwBX, DWORD &pdwBY, DWORD &pdwLX, DWORD &pdwLY);

-----------------------------------------------------------------------------------------------------------------------------------------------------------
6. 사용 예제
-----------------------------------------------------------------------------------------------------------------------------------------------------------
CExcelLib clsExcel;
WCHAR wsResult[MAX_STRING_BUFFER_SIZE];
DWORD dwBX, dwBY, dwLX, dwLY;
BOOL bResult;

clsExcel.OpenExcelFile(L"c:\\test.xls", OPEN_EXCEL_FILE);

clsExcel.SetActiveSheet(1);

//clsExcel.GetActiveRange(dwBX, dwBY, dwLX, dwLY);

clsExcel.SearchAll(L"bcd", wsResult, dwBX, dwBY);

while(TRUE)
{
    bResult = clsExcel.SearchNext(wsResult, dwBX, dwBY);
    if(bResult == FALSE)
   {
        break;
   }
}

clsExcel.SearchX(2, L"bcd", wsResult, dwBX, dwBY);

while(TRUE)
{
    bResult = clsExcel.SearchNext(wsResult, dwBX, dwBY);
    if(bResult == FALSE)
    {
        break;
    }
}

clsExcel.SearchY(9, L"bcd", wsResult, dwBX, dwBY);

while(TRUE)
{
    bResult = clsExcel.SearchNext(wsResult, dwBX, dwBY);
    if(bResult == FALSE)
    {
        break;
     }
}

clsExcel.CloseExcelFile();

Posted by Getroot

Leave your greetings.

Research2008/09/11 12:49
해킹이라는 것이 구체적으로 무엇일까요? 이글을 보고 계시는 분들 중 몇몇은 영화속에 나오는 3D 화면이 떠오르실 것이고, 몇몇 분은 컴퓨터앞에 앉아서 키보드를 미친듯이 두들기다가 "좋아, 뚫었어!" 라고 외치는 한 해커가 떠오르실지도 모르겠습니다. 해킹 이라는 것은 이런것이 아닙니다. 해킹이라는 것은 어떤 시스템의 구조를 정확히 파악하고 시스템의 동작을 잘못된 방향으로 돌려 내가 특수한 권한을 갖도록 만드는 것입니다.

어려우시죠? 예를 들어, 어떤 프로그램에 "100 GETROOT" 라고 입력하면 내 계좌에서 100원을 출금하여 GETROOT라는 사용자에게 100원을 이체하는 기능이 있다고 합시다. 아마 다음과 같이 프로그래밍 되어 있을 것입니다.

내 계좌 총액 = 내 계좌 총액 - 입력된 금액;
전달할 사용자 금액 = 전달할 사용자 금액 + 입력된 금액;

여러분이 해커라면 이렇게 프로그램의 내부 구조를 예측하고, 수없이 많은 테스트를 거쳐서 내 가정을 증명할 수 있어야 합니다. 아무런 문제가 없어보이는 이 시스템을 해커들은 어떻게 공략할까요? 내 ID가 GETROOT 라고 가정하고 다음과 같은 입력이 들어간다면 어떻게 될까요?

[ -10000 GETROOT ]

단지 마이너스 만원을 입력하는 것 만으로 [GETROOT 계좌 총액 = GETROOT 계좌 총액 - -10000]이 되므로 GETROOT 계좌에 10000원이 입금되고(- - 연산은 + 로 연산되므로), 다시 아래 연산에 의해 [GETROOT 계좌 총액 = GETROOT 계좌 총액 + 10000] 이 되어 계좌는 저 입력으로 20000원이 그냥 올라갈 것입니다. 실제로 이런 단순한 입력이 과거 모 네트워크 게임에서 통했었습니다. 하지만 이렇게 간단히 해결되는 것은 거의 없고 대부분 복잡한 프로그래밍과 리버스 엔지니어링 등이 필요합니다.

위 예를 보면, "1단계:시스템의 동작 방식을 예측", "2단계:시스템 공략 방식을 가정", "3단계:가정의 증명 과 실험" 과정을 거칩니다. 그럼 해커가 되려면 어떻게 해야 할까요? 이 3단계에서 모두 뛰어난 컴퓨터 유저가 되어야 합니다. 어떤 운영체제에서 동작하는지, 어떤 프로토콜로 통신하는지, 어떤 암호화 방식을 사용하는지, 어떻게 프로그래밍 되어 있을지 등  컴퓨터의 전반적인 많은 것을 정확하게 알고 있어야 시스템의 동작 방식을 예측할 수 있겠죠? 2단계, 시스템 공략 방식을 가정하는것은 끊임없는 훈련을 통해 감각을 키워야만 할 수 있습니다. 끊임없는 훈련은 어떻게 하냐고요? 앞에서 선배들이 미리 가정하고, 연구하고, 결과들을 내놓은 아주 좋은 자료가 인터넷에 널려있습니다. WWW.PHRACK.ORG에 있는 글만 모두 봐도 이 훈련에 충분할 것이라 생각합니다. 3단계 가정의 증명과 실험을 하려면, 프로그램을 개발하거나 SQL문을 짜거나 스크립드문을 만들거나 하는 과정이 필요할 것입니다. 위 예에서 마이너스의 입력을 클라이언트가 막고 있다면, 클라이언트를 뜯어서 다시 만들 수 있어야겠죠. 자바로 만들어진 클라이언트면 자바를 알아야겠고, C로 만들어져있으면 C를 알아야겠죠?

위 3단계 과정을 통해 가정 할 수 있는것은, 웹 프로그래밍을 할 줄 알고, 웹 시스템의 구조를 알면, 웹을 해킹할 수 있을것이다 라는 것입니다. 사실이냐구요? 예, 정확하게 사실입니다. 그럼 리눅스의 관리자 권한을 획득하려면 어떻게 해야 할까요? 예, 리눅스의 동작 방식과 그 구조 등을 알아야합니다. 리눅스의 동작 방식과 구조를 어떻게 공부할까요? 운영체제 책을 보면 됩니다. 이렇게 하나하나 공부하면서 컴퓨터 전문가가 되면 자연스럽게 해커가 될 수 있습니다.

여러분, 해킹이라는것은 RPG 게임처럼 책을 줍는다고 기술이 배워지는것이 아닙니다. 물론 득템을 하는 분야도, 사부가 같이 다니면서 몬스터를 때려잡는 것도 아닙니다. 단지 컴퓨터에 전문가가 되고, 항상 시스템 문제점을 찾고, 그 문제점을 해결하는 과정에서 해커가 될 수 있는 것입니다.  여러분도 컴퓨터 전문가가 될 방법은 아실것입니다. 컴퓨터 전문가가 곧 해커입니다. 그러므로 컴퓨터 전문가가 되는 방법이 해커가 되는 방법과 정확히 일치합니다.

초등학생, 중학생, 고등학생 여러분들께 추가로 몇가지 더 말씀드리겠습니다.

위 에서 말한 것들은 어디서, 누가 제일 잘 가르쳐줄까요? 대학교의 컴퓨터 학과입니다. 컴퓨터 학과에서는 운영체제, 프로그래밍, 네트워크, 컴퓨터 구조 등 모든것을 가르쳐줍니다. 그럼 대학을 졸업한 사람들이 왜 다 해커가 못되는것이냐구요? 2단계:시스템 공략방식을 가정하고 3단계 가정을 증명하고 실험하는 훈련을 쌓지 않았기 때문입니다. 이들은 다른 분야, 즉 프로그래머나 시스템 엔지니어가 되려고 이런 훈련을 쌓지 않았기 때문입니다. (또는 나가리 대학생활을 보냈을수도 있구요) 대학교 수업을 열심히 들으면서, 시스템에 대한 문제점을 항상 고민하고, 증명하다보면 어느새 해커가되어있을것입니다. 저 4년짜리 커리큘럼을 혼자 공부하시겠다구요? 천재가 아닌 이상, 4년보다 훨씬 긴 시간을 필요로 할 것입니다. 주위에 대학을 경험하지 않고 보안을 하는 친구들이 많이 있는데요, 그들은 "보통사람보다 훨씬 좋은 머리"를 가지고 있거나 "알고보니 아주 얕은 지식을 가지고 있는" 해커 입니다.  대부분은 후자죠. 대학때 필수적으로 가르쳐주는 운영체제나 네트워크 등을 모르고 해커라니요. 이들은 단순히 다른 사람들의 기술을 배낄 뿐 입니다. 건축을 예로 들자면, 설계 하는 사람과 돌을 나르는 사람 둘다 건물을 짖기 위해 노력하는 사람들이지만 둘은 다르지 않습니까?

여러분 대학을 안가고 해킹 공부를 해서 최고가 되겠다는 허황된 생각은 버리셨으면 좋겠습니다. 대학만큼 컴퓨터 시스템을 잘 가르쳐주는곳이 없습니다. 그리고 여러분이 기대하시는 것 처럼 뛰어난 해커가 되면 대기업에서 스카웃해간다 모 이런거, 없습니다. 십년전에는 확실히 있었습니다. 하지만 지금은 없습니다. 단순히 시스템을 공략만 할 줄 아는 해커는 사회에서 필요로 하지 않습니다. 그 문제점을 정확하게 해결할 수 있고, 또 그런 시스템을 설계하고, 만들고 구축할 수 있는 생산성 있는 해커만들 사회에서 필요로 합니다. 그러려면 대학 생활을 해보아야 합니다. 부디, 지금은 학교 공부를 충실하게 하고 대학에 가서 많은 공부를 해봤으면 좋겠습니다. 잘못해서 대학에 안가고 해킹 공부한다고 도전하다가, 나중에 취업도 안되고 개고생만 합니다. 실제로 전 중 2때부터 여러분과 같은 생각으로 컴퓨터에 미쳐 살았었는데요, 대학과 대학원을 다니면서 훨씬 깊고 넓은 지식을 습득할 수 있었습니다. 저도 대학교 안가도 해킹으로 성공할 수 있을 것이라는 막연한 생각을 가지고 있었지만, 지금와서 생각해보면 대학과 대학원을 오지 않았다면 지금쯤 바보가 되어있을것 같다는 생각이 들어서 아찔합니다.

아무쪼록 정식적인 절차를 밟으면서 뛰어난 해커가 되시길 바랍니다.
Posted by Getroot

Leave your greetings.

  1. 레몬맛인간

    좋은 말씀 감사드립니다 ^^

    혹시 (중학생이) 대학교 컴퓨터학과의 강의를 다운받아 보면 도움이 될까요?

    2010/06/06 00:30 [ Permalink : Modify/Delete : Reply ]

Gossip2008/09/09 16:22
뱀이 기어간다. 스물스물, 안개가 카페트처럼 깔려있는 젖은 새벽 해가 뜨기 직전, 진흙이 묻어있는 더러운 풀 숲 속으로 들어간다. 마지막으로 꼬리가 세차게 흔들리며 사라지는것까지 숨죽여 지켜본 개구리는 안심하고 폴짝 뛰었다. 아. 물렸다. 갑자기 깜깜한 앞. 놀라 바둥거리지만 자기 의지로 바둥거리는건 아니다. 저절로 그렇게 되는거지. 그러다 감각마져 사라졌다. 아마도 아직 바둥거리고 있을테지만... 그때 생각했다. 아... 뱀은 길어서 꼬리가 눈앞에 보여도 머리는 내 뒤에 있을 수 있었구나. 너무 늦게 똑똑해졌다. 원래 먹는 쪽이 머리도 먼저 쓰는 법이란다.
불쌍한 개구리...

서민을 구제해라. 서민을 구제해라. 말이 많다. 내가 신문을 입시 때문이 아닌 나의 관심으로 지켜보기 시작했을 때부터 오늘 아침까지도 항상 발견할 정도로 많다. 누가, 왜, 서민을 구제해야 하는가? 백원이 있으면 천원이 탐나고, 천원이 있으면 만원이 탐나는 것이 사람의 본능이다. 솔직히 말하면, 정부를 운영하는 것도 사람이고 이들도 욕심이 당연히 있다. 아니 오히려 욕심이 더 클수밖에 없다. 가진게 많으면 욕심통도 더 큰법이니까.  물론 이들이 청렴하여 자신을 희생한다면 진정한 의미에서의 서민이 구제될지도 모르겠다. 하지만 이젠 아무도 그것을 믿지 않을 정도로, 불가능한것이라는 것이 이미 귀납적으로 증명되었다. 그러니 저런 말을 하고, 정부나 부자들이 던져주는 떡을 기다리지 말고, 스스로 잡아 먹히지 않을 방법을, 수풀을 벗어나 스스로 힘을 기를수 있는 방법을 먼저 생각해야 한다.

오히려 부자들은 다수의 서민을 항상 못잡아먹어서 안달이다. 왜? 매우 쉽다. 그들도 서민과 똑같이 지금보다 더 많은 돈을 벌기를 바라기 때문이다. 그렇다면 한마리의 뱀과 싸우는 것보다는 백마리의 개구리를 잡아먹는게 더 쉽다. 아무도 당신이 서민이라고 불쌍히 여기고 도와줄 사람은 없다. 아예 처음부터 기대하지 않는 것이 좋다. 오히려 호시탐탐, 단물까지 빨아먹으려고 노림 당하고 있을뿐이다.

그러면 뱀도 처음부터 뱀은 아니였을텐데, 어떻게 뱀이 되었을까를 배워야 하지 않을까? 위의 간단한 이야기에 등장한 방법처럼 꼬리를 보여주고 뒤로 돌아와 머리를 물어버릴 수도 있을 것이고, 헛소문을 퍼트려서 주식을 구매하게 한 후, 차익을 남기는 방법으로 뱀이 되었을 수 있다. 대출을 받아 집을 사서 전세를 주고, 전세비로 다시 집을 사고 그것을 전세를 주고 하는 방법으로 오년간 대출 이자로 일억을 지출했으나 구매했던 집들이 모두 일억씩 올라서 사억의 시세 차익을 얻어서 뱀이 되었을 수도 있다. 사람이란 동물, 학습 효과가 매우 뛰어나서 만물의 영장이라고 "스스로" 부르고 있다. 사실 문명적으로 발전도 많이 하긴 했다. 그런데 왜, 이분야에서 만큼은 같은 일을 되풀이 하는가? 한번, 두번 경험했으면 이제는 그들에게 놀아나지 않을때도 되었는데 아직도 놀아나고 있는게 현실이다. 그들이 리스크 운운하면서 겁주는 것들이 잘 먹혀들어가는 건가? 공포가 사람들을, 대중을 소극적으로 만드는 건가?

사람 사는 세상도 자연이다. 자연속에 있으므로, 자연의 법칙에서 벗어날수가 없다. 먼저 공격하지 않으면 언젠가는 잡아먹히게 된다. 무엇이 무서워서 웅크리고 있는가? 웅크린 상태에서 평생을 오래오래 살수는 있겠다. 물론 그들도 나름의 철학이 있겠지만, 우리는 같은 사람이다. 당하고만 살아서는 너무 억울하지 않는가? 도망치지 말고, 먼저 머리를 쓰는 기지를 발휘해야 겠다. 그것도 아니라면 꼬리에라도 꼭 달라붙어 있던가. 그들은 자기 꼬리도 아까워서 꼬리를 끊지는 않을테니까.

Posted by Getroot

Leave your greetings.

Gossip2008/09/02 11:53

 불과 대학교를 졸업할 때 까지만해도 난 무한한 자유속에서만 창의력이 발휘된다고 생각하고 있었다. 하지만 자유라는 것을 너무 좁게 생각한 것일까? 난 사람이 만든 규칙이 자유를 잃게 하고 그것이 창의력을 억제한다고 생각했다. 하지만 어느 순간부터 무한한 자유라는것은 세상에 존재하지 않는다는것을 깨달았다. 비단 사람이 만든 규칙뿐만 아니라, 이 세상 모든것에는 항상 한계와 제약이 존재한다. 심지어 너무 자연스러워 느끼지 못했던 중력조차도 모든 생물에게 한계를 만드는 것 중 한가지이다. 모든 생물은 아무것도 하지 않고는 하늘로 뜰 수 없다는 아주 기본적인 상식이 한계라는 것을 깨닫지 못했던 것이다.

 오히려 자연에 본래 존재했던 제약이던, 그리고 이 제약이 사람에게 불편함을 느끼게 하던 그렇지 않던, 사람이 만든 규칙이던, 사람에게 본래 존재했던 능력의 한계던간에, 이런 한계 안에서야말로 비로소 창의력이 발휘될 수 있다는것을 깨닫게 되었다. 아무것도 하지 않고는 하늘을 날 수 없으므로 비행기를 만들 수 있는 창의력이 발휘되었고, 너무나 연약한 존재이므로 스스로를 보호할 수 있는 무기를 만들었던 것이다.

 세상에 터닝 포인트가 될 수 있었던 발명품은 기존의 사람들이 제약이라고 느끼지 못하는 것을 제약으로 만든 것 들이다. 바퀴가 그러했고, 전구가 그러했으며, 비행기, 우주선, 전화, 컴퓨터가 그러했다. 이러한 발명품이 나온 후 세상은 전환점을 맞이하였으며 이제 이런 발명품이 없는 세상은 꿈도 못꾸게 되었다. 어느날 갑자기 바퀴와, 전화 그리고 컴퓨터가 사라진다면 지금의 세상은 멈추게 된다. 하지만 저런것들이 없던 시절의 세상은 잘 돌아가고 있었다. 그때의 세상 사람들 중 대다수는 그것을 제약으로 느끼지 못했을 것이다. 하지만 지금 세상의 모든 사람들은 그것을 제약으로 확실하게 인식하고 있으며 그것을 해결하기 위한 발명품을 사용함으로서 생활의 질이 확실하게 높아졌다.

 아 직 세상에는 사람들이 인식하지 못하는 제약이 끝도 없이 많을 것이라고 난 확신한다. 그런 제약 중 한 가지라도 찾아내서 다시 한번 세상에 전환점을 주는 것, 세상의 제약을 한가지라도 풀어주는 것 그래서 세상이 한번 더 성장하는 것, 나 혼자서 힘들다면 그 전환점의 부분이라도 기여하는 것, 그것이 나의 영원한 목표이다.

Posted by Getroot

Leave your greetings.