Jump to content

1-7. 흑마법이 걸린 연금술의 비밀을 엿보다.


Recommended Posts

  • Members

image.thumb.jpeg.022a121fa926b5de04491fdcf4f07497.jpeg

배경지식이 너무 부족하다는걸 스스로 알고 있었기 때문에, 여전히 마음 한 곳에 불안감이 가득했다. 무언가 시작하기 전 조금 더 공부를 해야겠단 생각을 했다. 추가로 관련 아티클들을 찾아보고 깃헙에도 기웃거리면서 공부를 했다.

– The Arbitrage System on Decentralized Exchanges
– ALT: Aggregate Liquidity Technology
– Arbitrage in Cryptocurrency: A Survey
– On the Implementation of a Blockchain-Assisted Academic Council Electronic Vote System
– Towards Secure and Trustworthy Flash Loans: A Blockchain-Based Trust Management Approach
– The Flash Loan Attack Analysis (FAA) Framework—A Case Study of the Warp Finance Exploitation
– Trade or Trick?

당시 읽고 실제 많은 도움된 논문들 중 일부

대략적인 탈중앙화 거래소에서의 차익거래에 대해 공부하고 나서, 나는 주말에 AlchemyKeyMaster.zip 파일의 압축을 풀었다.

그리고 폴더 구조와 루트 폴더의 파일부터 리뷰를 시작했다.

사실 이 이야기의 모든 시작은 이 지점에서 시작되었다. 내가 그 때 끝까지 리뷰를 고사 했다면, 압축을 풀지 않았다면, 메일을 그냥 무시했다면 어땠을까?

내가 그 때 끝까지 거절했다면, 어땠을까…


봇은 자바스크립트와 타입스크립트, 이더리움 자바스크립트 API인 web3.js, 솔리디티 등으로 작성되어 있었다.

Node Modules 폴더는 일단 제외했다. 물론 위변조 된 파일이 있을 수 있지만, 나중에 Diff 첵업을 하면 쉬운 문제라고 생각했다.

그러고 나서 따져보니, 총 85개 파일만이 남았다. 파일 사이즈로 따지면 3.66MB였다. 대충 따져보면, 1바이트 당 1불의 가치.

리뷰를 한 과정은 특별한게 없었다. 다만, 이번 리뷰는 이 개발자(회사)가 작성한 코드를 내가 정해진 방법들로 확인하면서 Side Effect나 오류 또는 개선점을 찾는 목적이 아니었다. 무언가 숨겨진 백도어 등이 있는지를 찾는게 목적이었다.

그래서 제일 처음 나는 URL 하이재킹이나 타이포 스쿼팅을 면밀하게 리뷰했다. 그리고 나서 메타마스크를 연결하고 더미 지갑 주소들을 통해 실제 봇 실행을 하면서 이 애플리케이션이 어떻게 작동하는지 로그를 살펴보면서 파일들을 다시 살펴봤다. 지루한 시간이었다.

문제는 내가 이런 봇을 개발해 본 경험이 없다는 점이었다. 그렇기에 리뷰 과정에서 잘 모르는 부분, 상식적으로 생각했을 때 좀 이상한 부분, 의심가는 정황(외부 디비 연결 등)이 있는 부분에 대해서 Peter에게 중간 중간 얘기를 했는데, Peter는 내가 말한 포인트들을 봇 개발자에게 물어본 후 전달 받은 답변을 내게 설명해주었다. Peter는 개발자가 아니라 금융인이었다. 그가 이해할 수 있는 방식의 설명을 들은 후 그가 아는 만큼 다시 내게 설명을 해주었다.

풋. 비웃는 분들이 느껴진다. 맞다. 인정한다. 그러니까 덫을 놓은 사람에게 이 길 앞에 저거 좀 수상한데 저거 뭐야? 함정 아냐? 라고 물었던 것이다.

그렇지만 당시엔, 이렇게 체크 리스트 하나 하나를 원개발자에게 묻고 다시 답변 받은 내용을 Peter의 언어로 설명을 들은 후 체크 리스트 목록을 하나 하나 빠르게 지워나갔다.

당시 Peter는 내게 이렇게 말했다.

나 너무 무서울 정도로 흥분돼. 이 개발자가 너무 정직하고 순진한거 같아. 우리 정말 이걸로 큰 돈을 벌 수 있을꺼 같아. – Peter, 2023년 7월 초

순진한건 우리였다. DAMM. 덫에 한번 빠지면 그렇게 더 깊은 수렁에 빠지게 되는거 같다.

그렇게 Peter가 웃으며 얘기할 때면, 나는 “웅 그래?” 라고 대답을 했다. 당시 Peter는 나와 개발자를 직접 연결시키지 않고 중간에 스크린을 했다. 아마 그의 오래된 업무 방식 때문이었을것이다. (그 때 Peter가 아닌 내가 얘기를 나누었다면 어땠을까라는 생각도 해본다.)

근데 정작 순진한건 우리였다. 당시 Peter는 이 개발자(=회사)에 대한 신뢰도가 100% 였던거 같다. Peter가 의심한 유일한 한 가지는 ‘이 탈중앙화 거래소의 차익 거래 봇이 계속 수익을 내진 않을 것이다.’ 정도였다. 세상에 영원한건 없으니까. 그는 이런 세세한 우려까지 흥분해서 개발자와 소통을 하고 있던 중이었고, 개발자는 그럴 때면, Peter를 안심시키듯, “걱정하지마 무언가 새로운 거래 기법 등이 나오면 우리가 추가해줄게.”라고 얘기를 했다.

그렇게 내가 할 수 있는 리뷰를 마쳤다.

그리고 교차 검증을 위해 내가 신뢰하는 다른 시니어 개발자인 Steve에게 몇몇 코멘트와 함께 리뷰를 요청했다.

그리고 7월 12일 수요일 낮, Steve 에게도 비슷한 몇몇 부분에 대한 부정적인 피드백을 받았다. Peter는 이 부분에 대한 원개발자 피드백을 근거로 내게 봇 사용에 대한 최종 의견을 종용했고, 나는 퇴근 직전 테스트 운용을 컨펌해줬다.

가족들과 저녁 식사를 하는 도중, 난 문득 궁금한 마음에 Peter에게 문자를 보냈다.

“어때? 수익 기회(Arbitrage Oppotunity)를 찾아 실제 거래가 이루어져?” 라는 내 질문에 Peter는 내게 “몇시간째 돌아가고는 있는데, 전혀 기회를 못찾내?”라고 답장이 왔고, 바로 이어서 “개발자에게 한번 물어볼께 뭔가 세팅을 잘못한건가?”라고 답장을 보내왔다.

그리고 다시 1-2시간이 지났고, 나는 또 궁금한 마음에 Peter에게 문자를 보냈다.

Peter는 여전히 똑같아라는 답장을 보내왔다.

기대감이 컸기 때문에, 나는 가족들과 외식을 마치고 집에 들어와 다시 컴퓨터 앞에 앉았고 Peter에게 다시 문자를 보냈다. 이제 봇을 돌려본지 7시간 정도 된 상태였고, 나는 이전에 조사했던 큰 수익을 내고 있는 유니스왑 주소들(봇이라 생각되는)을 확인해봤다. 그리고, 그들은 여전히 오늘도 많은 거래 내역이 있다는걸 확인 했다.

그 때 였다. Peter에게 전화가 왔다. 이렇게 늦은 밤 전화를 할리가 없는데, 난 Peter의 전화를 받기 전 이미 무언가 잘못되었다는걸 느끼고 있었다.

  • Like 2

아캔락의 연금술사, 투자, 재테크, 경제적 자유, 원칙 등의 주제에 대해 글을 씁니다.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...