교재로 생각하고 정리하다 보면 책 두께에 비해 내용은 많지 않다. 대부분이 특정 개념을 설명하기 위한 예시들이기 때문이다. 여러 중요 개념들에 대해 일반인들도 쉽게 읽을 수 있고 이에 따라 관심을 가질 수 있게 만든 대중서이기 때문이다. 물론 예시를 이용한 전개 방식이기 때문에 구조적으로 정리가 잘 되어 있는 편은 아니라서 이후 교재를 통해 정리할 필요성은 존재한다.


  내용은 시스템 1과 시스템 2라는 개념에 대한 소개 및 여러 특징들과 이에 따라 인간이 빠질 수 있는 오류를 설명한다. 그리고 이것을 기반으로 이콘만을 다루었던 경제학의 오류들을 경제학의 이콘과 실제 인간의 차이점을 통해 설명한다. 하나는 이콘에서 가정했던 인간의 합리성이며 이는 앞의 여러 오류들을 기반으로 설명한다. 다른 하나는 경제학의 기본 이론 중 하나인 "기대 효용 이론"으로서 이 이론에서 다루지 않은 "경험 효용"을 통해 설명한다.





1. 두 시스템

1.1 등장 인물

  여러 예시들을 들며 인간의 사고를 "시스템 1"과 "시스템 2"로 구분한다. 시스템 1은 일종의 직관적인 사고로서 힘들이지 않고 생각하는 인상, 느낌 등이라고 할 수 있으며, 시스템 2는 이성적이고 합리적, 논리적이라고 할 수 있는 사고로서 정신적인 노동이 필요한 사고라고 할 수 있다.


1.2 주목과 노력

  시스템 1과 달리 시스템 2는 해당 사고를 하기 위해서 노력이 필요하다는 특징이 있다.


1.3 게으른 통제자

  시스템 2는 자기 통제와 인지적 노력이 필요하지만 동시에 게으르다고 표현할 수 있다. 어떻게 보면 당연한 것이 에너지 소모를 필요로 하는데, 필요 없을 때에도 이러한 사고를 할 필요는 없을 것이다. 예를들어 걸어도 되는 상황이라면 굳이 뛰지 않을 것이기 때문이다. 우리가 일상 생활에서 (굳이 노력을 하지 않는다면) 시스템 1을 많이 사용하는 것도 이 때문이다.


1.4 연상 작용

  시스템 1은 어떤 것을 인지하였을 때 연상 활성화를 일으킨다. 여기서 지은이는 이러한 연상 패턴의 논리적 일관성에 주목한다. 더 나아가 "점화 효과"라는 것이 있는데 이것은 먼저 인지된 것이 이후 인지된 것에 대한 생각에 영향을 준다는 것으로서, 생각 뿐만 아니라 행동에도 영향을 주게 된다. 즉 시스템 1의 판단이 시스템 2에 영향을 주는 것이다.


1.5 인지적 편안함

  "인지적 압박감"은 시스템 2가 필요로 할 때 느끼는 것으로서, 시스템 1에서 처리하지 못하는 경우 느낄 수 있다. 우리가 일상에서 직관적으로 판단하는 대부분의 것들은 시스템 1이 처리할 수 있다. 이렇게 간단한 문제들에 대해서 시스템 1로 충분히 처리할 수 있을 때는 "인지적 편안함"을 느낀다. "편안함"은 시스템 1도 필요 없는 상태이다. 알아야 할 것은 친숙함이라던가 본인의 기분이 좋을 때에는 "인지적 편안함"으로 인해 시스템 1이 판단을 담당하는 경우가 많아 오류에 빠지기 쉽다는 점이다.


1.6 정상, 놀람, 원인

  시스템 1은 본인을 기준으로 "정상"의 기준을 항상 유지하고 갱신하는데, 이를 통해 직관적으로 정상과 비정상을 구분할 수 있으며, 또한 다른 판단에도 그것을 사용한다. 우리가 별 무리 없이 의사소통이 가능한 것도 그 이유이다. 정상이라고 생각치 않은 것이 인식되었을 때는 "놀라"지만 그것이 반복된다면 (시스템 2 기준으로 말이 안되더라도) 그 놀람은 정상으로 인식되어 간다. 이외에도 시스템 1은 직관적으로 원인과 의도를 파악한다. 물론 그 이후 과정은 시스템 2가 담당하겠지만 즉흥적으로 인과관계를 파악해 낸다.


1.7 속단

  시스템 1은 속단하는 경향이 있으며, 이에 따라 오류를 저지르기 쉽다. 이 오류를 막으려면, 즉 의심을 위해서는 시스템 2가 필요하다. 시스템 1의 연상 작용은 "확증 편향"을 만들 수 있다. 참고로 확증 편향은 평향의 한 종류로서 자신의 선입견을 확증하는 정보만을 선택적으로 탐색하려는 경향을 말한다.


1.8 판단이 내려지는 과정

  시스템 1이 내외부의 일에 대해서 끊임없이 주시하고, 특정 상황의 여러 측면을 끊임없이 평가하는 것을 "기초 평가"라고 하며, 시스템 1의 직관적 판단에 중요한 역할을 한다. 또한 이러한 기초 평가는 추후 시스템 2의 판단에 자동적으로 사용된다. 이 사례로 "세기 짝짓기"가 있는데 예를들어 우리는 직관적으로 (실질적인 의미가 없더라도) 소리의 크기와 빛의 밝기를 그 정도에 따라 짝지을 수 있다. 다른 하나는 "머릿속 산탄총"으로서 우리는 자신이 원하거나 필요한 수준보다 더 많은 계산을 할 때가 있는데 이것이 그것이다. 예를들어 어떤 회사의 재정건전성을 판단하는데, 자신이 좋아하는 그 회사의 제품을 빼고 생각할 수 없다는 점이 그것이다.


1.9 더 쉬운 문제에 답하기

  시스템 1은 어려운 문제에 빨리 답할 수 없을 때, 그 문제와 관련있는 더 쉬운 문제로 답을 찾아 그에 대한 답을 한다. 예를들어 "멸종 위기 종을 살리는데 얼마를 기부할 것인가"에 대한 "표적 문제"를 "죽어가는 돌고래를 생각하면 얼마나 안타까운지"에 대한 "어림짐작 문제"로 "문제 바꿔치기"를 하는 것이다. 이것은 앞의 "머릿속 산탄총"에 의한 결과이며, 더 나아가 그 액수를 계산하는 것은 "세기 짝짓기"의 결과이다.



2. 어림짐작과 편향

2.10 소수 법칙

  우리는 적은 수의 표본이 가질 수 있는 오류를 알고 있지만, 시스템 1은 이를 무시하고 성급하게 결론을 추축하는 경향이 있는데 이것을 "소수 법칙"이라고 한다.


2.11 기준점 효과

  "기준점 효과"는 닻을 내린 곳에 배가 머물 듯이, 처음 입력된 정보를 기준으로 이후 판단에 계속 영향을 미치는 효과를 말하며 시스템 1에서 발생한다.


2.12 회상 용이성의 과학  /  2.13 회상용이성, 감정, 잠재적 위험

  시스템 1은 특정 사례들이 얼마나 쉽게 떠오르는지 즉 "회상 용이성"에 따라서 그 사례들의 발생 빈도를 판단하려는 경향이 있다. "회상 용이성 폭포"는 이러한 편향이 정책에 흘러들어가는 작동 원리를 말한다.


2.14 톰 W의 전공

  시스템 1은 대표되는 이미지를 ("대표성") 통해 판단하는 경향이 있다. 예를들어 톰 W의 성격이 범생이 같다는 식으로 표현한 후 전공을 예측케 하면 우리는 사회과학 보다는 공학 쪽으로 예측하는 경향이 있다. 참고로 시스템 2라면 사회과학에 재학 중인 학생과 공학에 재학 중인 대학생들의 수를 기반으로 한 통계를 기준으로 판단할 것이다.


2.15 린다: 적은게 많은 것이다

  "결합 오류"는 사람들이 결합된 두 사건과 그 중 한 사건을 직접 비교할 때 결합된 두 사건이 일어날 가능성을 더 높게 판단하는 현상이다. 예를들어 한 실험에서 반핵 시위에 참여한 경험이 있는 린다에 대해 확률이 더 높은 "은행 창구 직원" 보다는 결합에 의해 더 낮은 확률을 가질 수 밖에 없는 "여성운동을 하는 + 은행 창구 직원"으로 선택한 비율이 더 높았다.


2.16 인과관계는 통계를 이긴다

  한 사례가 속한 모집단과 관련되지만 개별 사건과는 상관 없는 "통계 기저율"은 해당 사례와 관련된 특정 정보가 있을 때도 시스템 1에 의해 과소평가된다. 반대로 "인과관계 기저율"은 해당하는 개별 사례와 관련 있는 정보로 취급되며 이에 따라 개별 사례 정보와도 쉽게 결합된다. 이는 일정 범주를 전형화하는 시스템 1의 기본 특징에 의한 것이다.


2.17 평균 회귀

  시스템 1은 일반적인 "평균 회귀" 현상의 과정에 의미를 부여하여 인과관계로 인식하는 경향이 있다. 예를들어 성적이 안 좋을 때 징크스와 관련된 행위를 했기 때문에 성적이 올라간 것이고, 좋을 때는 다른 변명거리를 찾으면서 인과관계로 인식하지만, 사실 평균 성적 기준으로 좋을 때가 있으면 당연히 나쁠 때가 있어야 그 평균에 이를 수 있는 것이다. 즉 단순히 평균에 다가가고 있는 과정에서 각각의 사례에 의미를 부여하는 성향이 있다.


2.18 직관적 예측 길들이기

  a. 평점의 평균을 추정하라

  b. 증거에 받은 인상에 어울리는 평점을 정하라

  c. 증거와 평점의 상관 관계를 정하라

  d. 평균을 기준으로 그 비율만큼 조정하라



3. 과신

3.19 이해 착각

  "사후 확신 평향"은 결과를 알고난 후 본인은 이전부터 알고 있었다고 믿는 현상이다. "결과 편향"은 예전에 내린 결정의 옳고 그름을 과정이 아닌 결과를 가지고 판단하는 경향이다.


3.20 타당성 착각

  "타당성 착각"은 우리가 어떤 판단에 대해 주관적으로 확신하지만, 그 확신이 합리적으로 평가한 결과가 아닌, 정보의 정합성과 정보 처리의 인지적 편안함에 의한 착각인 것을 의미한다.


3.21 직관 대 공식

  전문가들의 판단 즉 직관은 공식 즉 통계보다 더 정확성이 떨어진다. 이것은 단기적 보다는 장기적으로 그러한 경향이 크다. 장기적인 예측은 필연적으로 쉽지 않은데, 인간은 여러 예측 변수를 사용하고 일관성이 떨어지는 성향이 있다. 이 때문에 차라리 간단한 변수들에 가중치도 같게 두고 통계를 내는 것이 더 정확한 경향이 있다.


3.22 전문가의 직관: 언제 신뢰해야 할까?

  규칙성이 존재하고 전문가들이 그 규칙성에 대한 학습이 되었을 때 전문가들의 직관을 신뢰하라.


3.23 외부 관점

  우리는 예측을 할 때 다른 여러 비슷한 사례들 즉 "외부 관점"을 기준으로 판단하기 보다는, 우리 자신들의 지식 및 내부 상황들 즉 "내부 관점"을 기준으로 판단하는 경향이 있다. "계획 오류"는 내부 관점을 가지고 비현실적으로 최상에 가까운 시나리오를 짰지만 ("낙관 편향") 이 결과가 비슷한 사례들에 대한 "외부 관점"을 참고하여 평가한 것 보다 많이 틀린 것을 말한다.


3.24 자본주의의 동력

  운을 간과하는 "통제 착각"과 "경쟁 간과" 그리고 "과신"에 따른 낙관주의를 경계하고 "실패 사전 점검"을 통해 간과한 위협을 알아내자.



4. 선택

4.25 베르누이 오류

  베르누이의 "기대 효용 이론"은 효용을 측정할 때 기준점으로 부터의 변화를 간과하였다. 즉 효용이 현재 부의 상태 뿐 아니라 부가 변해온 과정에도 좌우된다는 사실을 간과한 것이다.


4.26 전망 이론

  베르누이의 이론이 효용을 결정하기 위한 부의 상태만을 필요로 하는 것과는 달리 "전망 이론"에는 이익과 손실을 평가할 때 비교 대상이 되는 이전 상태인 "준거점"을 필요로 한다. (준거에 대한 의존성 외에도 민감도 체감성, 손실 회피성이라는 인간의 인지적 특성을 고려한다) 궁극적으로 전망 이론은 인간의 선택이 기대 효용을 극대화하는 행위라기 보다는 상황에 따라 위험을 회피하거나 추구하는 것이라고 주장한다.


4.27 소유 효과  /  4.28 나쁜 사건

  경제학의 무차별 곡선은 효용이 과거와는 무관하게 현재 상황에 따라 결정된다고 단정한다. "소유 효과"는 손실이 같은 크기의 이익보다 더 커보이는 것을 말하며, 인간의 "손실 회피"라는 특징이 작용한 결과이다.


4.29 네 갈래 유형

  복권의 당첨 가능성은 매우 낮지만 사지 않는다면 그 가능성은 0%이다. 하지만 우리는 그 기대값보다 더 비싼 복권을 구입한다. 확률적으로 매우 적더라도 이렇게 가능성이 낮은 결과에 큰 비중을 (실질적인 기대값보다) 두는 것을 "가능성 효과"라고 한다. 또한 우리는 95%의 확률로 100만원을 받는 것보다 (기대값이 더 적은) 100%의 확률로 90만원을 받는 것을 선호한다. 이렇게 확실함을 선호하는  것을 "확실성 효과"라고 한다.


4.30 드문 사건

  사람들은 일어날 것 같지 않은 사건의 발생 확률은 과대 평가하고, 결정을 내릴 때 과대 가중치를 부여한다. 이는 시스템 1의 확증 편향, 인지적 편안함의 결과이다.


4.31 위험 관리 정책

  양자 택일 결정 5가지를 고민할 때 각각의 선택 5가지를 모두 고려하는 것을 "좁은 틀짜기"라고 하고, 32가지를 놓고 고려하는 것을 "넓은 틀짜기"라고 한다. 외부 관점과 마찬가지로 넓은 틀짜기 형태의 위험 관리 정책은 계획 오류에서 나타나는 낙관과 손실 회피 성향에 따른 지나친 신중함(보수적인 조직처럼)을 막는다.


4.32 심리적 계좌

  인간은 좁은 틀짜기 형태의 심리적 계좌를 사용한다. 이에 따라 "매몰 비용 오류"를 범할 수 있으며, 이콘과 달리 "후회"라는 감정을 갖는다. 후회에 면역력을 키우고 후회는 사후 판단 편향과 함께 온다는 사실을 기억하자. 이를 통해 후회라는 감정이 합리적 선택에 미치는 영향을 줄여야 한다.


4.33 역전

  "단일 평가"에서는 시스템 1이 개입하기 쉽지만, 여러 시나리오를 동시에 비교하는 "공동 평가"에서는 시스템 2가 개입한다. 이에 따라 이콘이 아닌 인간에게서는 "선호도 역전"이 일어난다.


4.34 틀과 사실

  틀짜기(프레이밍) 효과는 실질적인 내용이 같더라도 표현이 인간의 믿음과 선호에 영향을 미치는 경향을 말한다.



5. 두 자아

5.35 두 자아  /  5.36 이야기로서의 삶

  경제학에서 다루는 효용은 "결정 효용"이지만 지은이는 "경험 효용"을 소개하고 이를 기반으로 설명한다. "정점과 종점 원칙"은 대장 내시경 검사를 예로 들었을 때 환자들이 기억하는 고통이 최악의 순간에 느낀 고통과 마지막 순간에 느낀 고통의 평균이라는 사실이다. 그리고 검사가 지속된 시간은 고통 평가에 영향을 미치지 않았다. 즉 기억하는 자아가 느끼는 효용은 (결정 효용) 위와 같은 두 가지 특징 때문에 경험하는 자아가 느끼는 효용과 (경험 효용) 다를 수 밖에 없다.


5.37 체감 행복  /  5.38 삶을 돌아볼 때

  행복은 경험하는 자아가 느끼는 매 순간의 행복들과, 기억하는 자아가 판단하는 행복 이렇게 2가지의 측면이 있다.




Posted by SanseoLab



  첫 머리에서 러셀은 철학을 "어떤 질문에 대해 그 문제와 관련된 여러 사정을 파악한 후 비판적으로 대답하고자 하는 시도"로 정의한다. 지금까지 보아온 철학 책들과 달리 이 책의 구성도 이러한 시도를 보여준다. 관련된 여러 사정들 중 첫 번째는 "현상과 실재"의 구분이다.




1. 현상과 실재

  이 챕터에서는 "현상" 즉 사물이 어떻게 보이는지와 "실재" 즉 사물이 사실 상 무엇인지를 구별한 후 "실재"에 집중하고 있다. 먼저 용어 정리를 위해 책상을 예로 들어서, 실재의 책상이 있다고 가정한 후 이것을 "물적 대상" (일체의 물적 대상을 아울러 "물질"로)으로 부른다. 만약 책상이 실재한다고 치자. 하지만 이것은 우리의 감각 여건에 의해 인식된 것으로 부터 추리되는 것이다. 즉 감각 여건을 통해 우리가 보는 것은 단순한 현상에 지나지 않으며, 이 현상을 어떤 실재의 기호라고 가정하자.


  이에 따라 2가지 문제가 제기되는데, 하나는 "물질이라는 것이 존재하는가?"이고, 다른 하나는 "만약 존재한다면, 그 본성은 무엇인가?"이다. 이것은 다음 2개의 장에서 다룬다.



2. 물질의 존재

  러셀은 이 챕터에서의 논증을 강력하지 못하다고 고백한다. 그 논증은 모든 지식이 우리의 본능적인 신념을 기초로 성립되며, 이것들에 대한 수정 과정을 거쳐 서로 조화를 이룬다면 이를 통해체계적으로 조직된 정연한 지식에 도달할 수 있다는 주장을 근거로 한다. 즉 물질적 세계가 실재한다는 가정을 용인될 수 있는 본능적 신념으로 인정하는 것이다. 이를 통해 우리의 감각 여건이 우리와 독립된 어떤 존재(물질)의 기호라고 할 수 있는 결론에 도달한다.



3. 물질의 본성

  2장에서는 "물질이 존재하는가?"를 다루었다면(결론은 그렇다는 것이었다), 여기서는 그 "물질"이란 무엇인가를 다룬다. 러셀은 물질의 본성에 대한 여러 가설들을 소개하고 비판하며, 근본적으로 "만일 물질이 실제한다면, 물질은 어떠한 본성을 가져야 한다고 주장할 수 있게 하는 일반적인 철학 논증이 있느냐"라는 문제를 제기한다. 즉 그 본성이 무엇인지 알기 위해 그 전제 조건으로서 이 물음 자체가 타당한지를 묻는 것이다.



4. 관념론의 오류  /  5. 경험에 의한 지식과 학습에 의한 지식

  앞의 물음 자체가 타당한지 알기 위해서는 더 나아가 전제 조건으로서 지식 즉 안다는 것에 대한 정리가 필요하다. 러셀은 지식을 "사물에 대한 지식"과 "진리에 대한 지식"으로 구분한다. 사물에 대한 지식은 "직접지"와 "진리에 대한 지식"으로 구분된다. 5장에서는 사물에 대한 지식에 간해서 설명하는데, 기 중 기술에 의한 지식은 4장의 마지막인 관념론의 근거 명제에 대한 오류를 지적하는데 사용된다.



6. 귀납 원리에 대하여

  첫 부분에서는 물질의 본성에 대한 의문이 있었으며, 이를 위해 전제 조건으로서 더 근본적으로 지식 자체에 대한 논의가 있었다. 즉 물질이란 무엇이냐, 그 이전에 무엇인지 알 수 있느냐, 아니 아는것이란 무엇이냐 형식으로 근본적인 물음이 진행 중이었다.


  바로 전장에서는 직접 경험의 한계 및 "기술에 의한 지식"을 지식으로서 인정하였다. 여기에서는 더 나아가 이러한 지식을 통해 그 이상으로 확대하기 위한 즉, 그러한 추리를 위한 일반적인 원리로서 귀납론을 소개한다.



7. 일반 원리에 대한 지식

  여기에서는 연역법을 예로 들며, 일반 원리에 대해 소개한다. 이것은 귀납법과 같이 경험에 의해 증명/반증을 할 수 없으나 경험되는 것에서 출발하는 논증으로 사용되는 원리이다. 다시 말해서 논리학 및 수학의 일반 명제와 같이 선천적으로 인식되는 명제가 있다는 것이다.



8. 선천적 지식은 어떻게 가능한가?

  앞의 경험론, 합리론을 지나 이 장에서는 칸트의 논증을 설명해 가며, 선천적이라고 할 수 있는 지식의 유무에 대한 논의를 시작한다. 러셀은 선천적으로 인식되는 명제, 즉 선천적 지식이 명사적인 것이 아닌 품사에 의해 지명될 수 있는 것으로서 성질이나 관계 같은 것이라고 주장한다. 이 관계라는 것은 물질적 대상의 존재나 감각 여건의 존재와는 다른 방식으로 존재성을 갖는다.



9. 보편의 세계

  지금까지의 논증은 물질이 존재한다고 가정하고, 그 본성을 파악하려다가 근본적으로 지식이란 무엇인가에 대해 논의하는 과정을 거쳤다. 그리고 이것을 기반으로 지금까지 "물질적 대상"의 존재 즉 "사물에 대한 지식"을 고찰하였으며, 여기서는 "진리에 대한 지식" 즉 예를들어 앞에서 언급하였던 "관계"와 같은 것을 다룬다.


  먼저 이러한 존재 방식을 갖는 것은 어떠한 것인가를 알아 본다. 이 문제는 플라톤이 "이데아론"을 통해 알아내고자 했던 주제였다. 어떤 것을 정의하고자 할 때 우리는 그 대상들의 공통된 성질이나 본질을 찾는다. 이러한 본질을 플라톤은 "이데아"라고 하였다. 러셀은 이 이데아 대신 "보편"이라는 단어를 사용한다. 그리고 "존재"하는 물질과 대비하여 보편을 "존재성"을 갖는다고 표현한다.



10. 보편성에 대한 우리의 지식  /  11. 직관에 대하여

  러셀은 "2 + 2 = 4"라는 명제를 통해 이것이 2와 4라는 보편 사이의 "관계"라는 것임을 말한다. 즉 "모든 선천적 지식은 오직 보편의 여러 관계만을 다룬다"는 것이다.


  러셀은 앞에서 지식을 "사물에 대한 지식"과 "진리에 대한 지식"으로  구분하였다. "사물에 대한 지식"은 "직접지"와 "기술에 의한 지식"으로 구분했다. "기술에 의한 지식" 즉 사물에 관한 파생적 지식에는 "직접지"와 "진리에 대한 지식"이 같이 포함되어 있다. 진리에 관한 직접적 지식은 "직관적 지식"이라고 하며, 결국 진리에 관한 지식은 모두 "직관적 지식"에 의존한다. 이에 따라 "직접지" 처럼 "직관적 지식"도 그 성질과 범위를 고찰할 필요가 있다. 문제는 "직접지"와 다르게 "진리에 대한 지식"은 오류의 문제가 있으며, 어떻게 지식을 오류로부터 구분할 수 있는지도 생각할 필요가 있다.



12. 진리와 허위

  진리는 먼저 다음의 3가지 필요 조건을 갖는다. 첫 번째는 진리에는 "허위"라는 대립되는 것의 존재가 허용되어야 하며, 두 번째는 진리는 "신념"의 성질로서, 신념이 존재하지 않는다면 진리 또는 허위가 존재하지 않을 것이라는 사실이다. 마지막으로 진리는 신념과 외부 사물 사이의 관계에 완전히 의존하는 성질을 가지고 있다.


  신념은 어떤 결합된 복합체와 대응할 때는 참이고, 그렇지 않을 때는 거짓이다. 즉 신념의 객체는 2개의 항과 1개의 관계로서 이 2개의 항이 관계에 의해 하나의 복합체로 통합된다면 그 신념은 참이고 아닐 때는 거짓이다.



13. 지식의 오류 및 개인적 의견

  앞 장에서 진리와 허위가 무엇인지를 다루었다면, 여기서는 어떻게 참과 거짓을 알 수 있는지에 대해서 다룬다. 그리고 이를 통해 지식을 정의한다. 11 장에서는 "자명성"을 "진리의 절대적 보증이 되는 자명성"과 "부분적인 보증이 되는 자명성" 2개로 나누었다. 만약 직관적 지식이 그 자명성의 정도에 따라 신뢰할 수 있다면, 즉 직관적 지식으로부터 논리적으로 귀결되는 것이라면 그것을 지식이라고 부른다.



14. 철학적 지식의 한계  /  15. 철학의 가치

  더 근본 물음으로 들어가 대답하려고 했던 지금까지의 논증과 달리 이 두 장은 각각의 주제에 대한 러셀의 생각이 적혀져 있다. 러셀이 생각하는 철학적 지식의 한계와 그럼에도 불구하고 철학이 갖는 가치에 대한 내용이다.




  몇 번을 정리해가면서 읽었는데도 아직까지 책의 내용을 완벽하게 이해하지 못했다. 철학이라는 학문에 익숙치 않아서 여기서 사용되는 사고의 방식이 쉽지 않았지만, 과거에 했었던 그리고 하고 있는 사회과학이나 공학과는 또 다른 "철학적 사고"에 조금은 익숙해졌다는 점에서는 좋은 경험이었다.

'Book_Reviews' 카테고리의 다른 글

생각에 관한 생각 - 대니얼 카너먼  (0) 2018.11.25
Posted by SanseoLab

1. 기본

2. 사용법

.... 2.1 sc 명령어

.... 2.2 service.msc

3. 구조

.... 3.1 동작 구조

.... 3.2 개발

........ 3.2.1 exe 형태

........ 3.2.2 dll 형태

4. 악성코드 분석





1. 기본

  기본적으로 서비스는 실행 가능한 바이너리여야 할 것이고 sys, exe, dll이 그 대상이 될 것이다. 명령 프롬프트에서 다음과 같은 명령을 실행해서 나온 결과 중 "종류"를 확인해 보면 3가지를 확인할 수 있다.


> sc qc [ 서비스 이름 ]


  sys 바이너리 즉 디바이스 드라이버는 KERNEL_DRIVER(1), exe 실행 파일 바이너리는 WIN32_OWN_PROCESS(10), dll은 WIN32_SHARE_PROCESS(20)이다.


  등록된 서비스는 명령 프롬프트에서 sc 명령어를 사용하거나 또는 service.msc 유틸리티, 그리고 레지스트리를 통해서 확인 가능하다. sys나 exe 같은 standard alone한 서비스는 다음의 레지스트리에서 확인 가능하다. ImagePath를 보면 exe 및 sys 파일의 경로를 확인할 수 있다.


[ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services ]


  DLL 형태의 서비스 프로그램은 조금 다르다. 각 서비스가 위의 키에 존재하는 것은 맞지만 ImagePath에 실행 파일의 경로가 아니라 다음과 같은 형태를 볼 수 있다.


%SystemRoot%\system32\svchost.exe -k  [서비스 그룹 이름]


  이것은 부팅 시에 svchost.exe의 인자로 서비스 그룹의 이름을 넣고 실행함으로써 호출된다는 것이다. dll의 경로는 ImagePath가 아니라 ServiceDll에 위치한다. 참고로 지금까지 언급했던 서비스 그룹은 다음의 레지스트리에 저장되어 있다. 


[ HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost ]


  정리하자면 현재 윈도우의 프로세스 트리를 보면 services.exe를 확인할 수 있다. 이것의 자식 프로세스로 동작하는 exe 프로그램들은 서비스로 동작하는 (그리고 거기에 맞게 개발된) exe 프로그램이다. 이것 말고도 다수의 svchost.exe 프로세스들을 확인할 수 있다. 위의 내용과 같이 각 서비스 그룹 별로 svchost.exe가 실행되며 각각의 svchost.exe에는 담당하는 서비스 그룹에 속하는 dll들이 로드되어 있다.





2. 사용법

2.1 sc 명령어


> sc create [서비스 이름] binpath= [서비스 파일 경로]

> sc delete [서비스 이름]

> sc start [서비스 이름]

> sc stop [서비스 이름]

> sc query

        ; 전체 서비스 조회

> sc query [서비스 이름]

        ; 특정 서비스 조회



2.2 service.msc

실행창 -> service.msc

        ; 위의 명령어로 확인할 수 있다.





3. 구조

3.1 동작 구조

  서비스 프로그램의 경우 dll이나 sys는 당연할테지만, exe 형태를 가지고 있다고 하더라도 서비스로서 동작하도록 개발된 프로그램이기 때문에 일반적인 더블 클릭을 통해 실행되는 것이 아니라 앞에서 보았던 sc.exe 같은 프로그램이 해당 서비스를 등록하고 실행시켜 주는 역할을 해주어야 한다.


  이러한 sc.exe 같은 프로그램들을 SCP라고 한다. 이외에도 SCM이라는 개념도 있는데 모든 서비스들을 관리하는 역할을 한다. 위의 내용을 보고 추측할 수 있듯이 SCM은 services.exe이다. dll 형태의 경우 svchost.exe가 관리하는 것으로 생각할 수 있겠지만 이것도 궁극적으로는 부모 프로세스인 services.exe가 관리한다.


  일반적으로 간단하게 sc.exe를 이용할 수 있겠지만 직접 SCP를 만드는 것도 가능하다. SCP의 경우 간단하게 OpenSCManager()로 SCM을 오픈하고, 여기서 받은 핸들을 통해 CreateService()로 서비스를 생성한다. 그러면 SCM은 HKLM\SYSTEM\CurrentControlSet\Services 아래에 서비스에 대한 레지스트리 키를 생성한다. 삭제할 때는 DeleteService() 함수를 사용할 수 있다.



3.2 개발

3.2.1 exe 형태

  여기서는 서비스 프로그램의 구조 부터 시작하며 먼저 exe 형태를 다루기로 한다. 일반적인 프로그램은 Entry Point만 존재하면 되겠지만, 서비스 프로그램은 추가적으로 Service Entry Point 및 Service Control Handler가 필요하다.


  일반적인 서비스 프로그램의 형태에 대해 동작 과정 및 SCP와 연관시켜 설명하기로 한다. 만약 sc.exe를 이용해 서비스를 시작시키는 경우 내부적으로 (직접 SCP를 개발한 경우에도 마찬가지이다) StartService() 함수가 호출된다. 그러면 SCM 즉 services.exe에 의해 해당 서비스 프로세스가 생성 및 실행된다. 이 때 서비스 프로그램도 일반적인 프로그램과 마찬가지로 Entry Point 즉 main 함수가 실행된다.


  일반적인 서비스 프로그램의 경우 실질적인 루틴은 main에 존재하지 않으며 대신 간략하게 StartServiceCtrlDispatcher() 함수를 이용해 Service Entry Point 즉 실질적인 서비스 루틴을 담당하는 함수를 등록한다. 이 함수는 Service Main 함수라고 부르도록 한다.


  이후 Service Main 함수가 실행되는데 일반적으로 초기화 루틴부터 시작한다. 먼저 서비스 프로그램의 경우 SCM과의 제어를 담당하는 부분이 필요하다. 이러한 부분을 Service Control Handler라고 부르며 앞에서도 언급하였듯이 Service Main 함수 처럼 추가적인 함수로 구현해 놓을 필요가 있다. 핸들러 함수가 존재해야 서비스에 대한 중지, 시작 등의 제어를 처리할 수 있으며 실제로 그러한 역할을 담당한다.


  이에따라 Service Main 함수의 초기화 루틴에서는 RegisterServiceCtrlHandler()를 통해 핸들러 함수를 등록하는 부분이 존재한다. 다음으로는 서비스를 실행시키는 부분이다. 물론 현재 Service Main 함수 부분에서 이미 실행 중이긴 하지만 SCM 입장에서는 SERVICE_START_PENDING 상태라고 할 수 있다. 그러므로 초기화 이후에는 SetServiceStatus 함수를 이용해 인자로 SERVICE_RUNNGING를 설정하고 호출하여야 이후 서비스 프로세스로서 동작하게 된다.


3.2.2 dll 형태

  DLL 형태의 경우는 앞에서 살펴보았던 exe 형태와는 조금 다르다. dll의 경우 먼저 ServiceMain()이라는 함수를 만들고 이 함수를 export해야 한다. exe의 경우 실행시키면 바로 Entry Point인 main 함수가 실행되듯이, dll의 경우 서비스 시작 시 이 export된 함수를 호출할 것이다. 또한 StartServiceCtrlDispatcher() 함수를 호출할 필요가 없다. 그렇기 때문에 실제 서비스로서의 역할을 이 ServiceMain()에서 수행하면 된다. 물론 SCM과의 커뮤니케이션을 위해 Service Control Handler가 필요하므로 해당 함수를 구현한 후 RegisterServiceCtrlHandler()를 통해 핸들러 함수를 등록할 필요는 있다.





4. 악성코드 분석

  인터넷을 보면 서비스 디버깅 방식이 존재한다. 그러한 방식을 사용하면 exe 형태이든 dll 형태이든 위의 정리된 내용을 바탕으로 분석할 수 있을 것이다. 


  추가적인 팁이 있다면 서비스 프로그램은 시스템 권한으로 실행되기 때문에 EP를 무한 루프로 수정하고 Attach하려고 해도 불가능하다. 이 경우에는 ExecTI 같은 도구를 이용해 디버거를 시스템 권한으로 실행시킨 후 Attach하면 될 것이다.


'악성코드 분석' 카테고리의 다른 글

디버거로 덤프 뜨기  (1) 2018.12.15
[Tool] ejExtractor  (0) 2018.12.10
악성 행위에 사용될 수 있는 시스템 유틸리티  (0) 2018.09.30
윈도우의 작업 스케줄링 및 기타  (1) 2018.09.30
GCC 사용법  (0) 2018.07.19
Posted by SanseoLab
이전버튼 1 이전버튼

블로그 이미지
Malware Analyst
SanseoLab

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2018.11
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

최근에 올라온 글

최근에 달린 댓글

글 보관함