lense 0.1.20 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/bin/lense +1 -2
  4. data/data/mfwvl1.yaml +54 -0
  5. data/lib/lense.rb +45 -1
  6. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e2912fe447a26bd1b7c26ccb9c2dd38a1dbed0e5
4
- data.tar.gz: a9f65b082695991d3b62623a28127a77762aee77
3
+ metadata.gz: e0a7ee6941c8b35eb8bcf4e4e0c6fc73aa1b3e48
4
+ data.tar.gz: 29f9d6f898f4d3fa101374f34de654de2d692366
5
5
  SHA512:
6
- metadata.gz: 01146da48f9b4a16ebc8ff92cc54e8d45b8195e777493383b967ec7957dcac697e493b050bf882d33b687f3e7a4d0e76a2544572796defe959c3e63b79d00474
7
- data.tar.gz: 73b5ba662dffc0f6262f0ae3d9cf68cd8e688516a5e079b3a08ee31a88c69cefe0612224a8989f6a4f902b852cb46ad70551946353e6945f041d09bf21ac3512
6
+ metadata.gz: 795bc589851d6630bcfe27ce3806474a192276620aa31ec8046b55920b6777983eef4ee179d1cd8bba32aef80f27df02229be56d42cc822fe68505711124b7cd
7
+ data.tar.gz: 2604c7aebd3db4caf242dbb220bef70e5800ceaf589a8f8aa6ce8bdb97806d5911060a12112f11b04832ca091180ee2c5e0b44dcb77cd016c61b5b8e35024031
data/Gemfile CHANGED
@@ -4,3 +4,4 @@ gemspec
4
4
  gem "gli", ">= 2.13.0"
5
5
  gem "psych", ">= 2.0.13"
6
6
  gem "rest-client", ">= 1.8.0"
7
+ gem "highline", ">= 1.7.2"
data/bin/lense CHANGED
@@ -45,8 +45,7 @@ command :search do |c|
45
45
  end
46
46
 
47
47
  command :up do |c|
48
- c.action do
49
- puts 'TODO implement starting of current course'
48
+ c.action do |global_options,options,args|
50
49
  end
51
50
  end
52
51
 
data/data/mfwvl1.yaml ADDED
@@ -0,0 +1,54 @@
1
+ ---
2
+ # Name of course. Should match website
3
+ course_name: Memory Forensics With Volatility Lesson 1
4
+
5
+ # Folder in ~/.lense directory
6
+ folder_name: mfwvl1
7
+
8
+ # Eh why not?
9
+ course_difficulty: 1
10
+
11
+ # Items to download. Should be placed in ~/.lense/<folder_name>
12
+ downloads:
13
+ - https://drive.google.com/file/d/0B50xr4dwmqonNmtpa3pycGM4WXM/view?usp=sharing
14
+
15
+ # Any docker containers to pull.
16
+ docker: llacoste/docker_volatility
17
+
18
+ # The final command to open in a new terminal.
19
+ entry_point: docker run -v ~/.lense/mfwvl1/my_memory_sample.vmem:/data -i -t
20
+
21
+ # Begin the lesson.
22
+ lesson_plan:
23
+ - say: Load up volshell on the windows_xp.vmem image (volatility -f windows_xp.vmem volshell)
24
+
25
+ - say: 'We are going to take a look at some TYPEs in volshell. Using the dt command inspect: _EPROCESS _ETHREAD _TOKEN'
26
+ question:
27
+ ask: What do you see?
28
+ hint: 'Enter: dt("<TYPE>")'
29
+ expect: '*'
30
+
31
+ - say: Exit volshell and run pslist
32
+ question:
33
+ ask: What process has PID 296?
34
+ expect: svchost.exe
35
+
36
+ - say: Now run psscan
37
+ question:
38
+ ask: What is the offset of the explorer.exe process with PID 236
39
+ expect: '0x0000000005201a08'
40
+
41
+ - say: Now run pstree
42
+ question:
43
+ ask: What is the name of the first child process of explorer.exe with PID 236
44
+ expect: vmtoolsd.ex
45
+
46
+ - say: Now run psxview
47
+ question:
48
+ ask: What process has PID 296?
49
+ expect: svchost.exe
50
+
51
+ - say: You can look at the privileges of a process by using the privs plugin along with the -p flag. Use the -p flag on various plugins to focus on a particular process with the given PID i.e. -p 236 for explorer.exe. Run privs on explorer.exe
52
+ question:
53
+ ask: What are the privileges for SeImpersonatePrivilege
54
+ expect: Present,Enabled,Default
data/lib/lense.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  require 'rest-client'
2
+ require 'highline/import'
3
+
2
4
  class LENSE
3
5
  attr_reader :config, :current_course
4
6
 
5
- VERSION = '0.1.20'
7
+ VERSION = '0.1.22'
6
8
  LENSE_DIR = File.join(ENV['HOME'],'.lense')
7
9
  COURSES_DIR = File.join(LENSE_DIR,'courses')
8
10
  CURRENT_COURSE_FILE = File.join(LENSE_DIR,'current_course')
@@ -57,4 +59,46 @@ class LENSE
57
59
  puts ""
58
60
  end
59
61
  end
62
+
63
+ def run()
64
+ q_prefix = '<%= color("Q? ",:red) %>'
65
+ hint_prefix = '<%= color("Hint: ",:yellow) %>'
66
+ say_prefix = '<%= color("% ",:blue) %>'
67
+ answer_prefix = '<%= color("Ans: ",:red) %>'
68
+ question_separator = '<%= color("---",:green) %>'
69
+
70
+ test_file = 'data/mfwvl1.yaml'
71
+ test_str = File.file?(test_file) ? File.read(test_file) : ''
72
+ lense_file = Psych.load(test_str) || {}
73
+
74
+ lense_file['lesson_plan'].each do |lesson|
75
+ say question_separator
76
+ say "#{say_prefix} #{lesson['say']}" if lesson['say']
77
+
78
+ if lesson['question'] && lesson['question']['ask']
79
+ asked, hint_limit, max_asked, correct = 0, 3, 5, false
80
+
81
+ until correct || asked >= max_asked do
82
+ asked += 1
83
+ question = lesson['question']['ask']
84
+ hint = lesson['question'] && lesson['question']['hint']
85
+
86
+ show_hint = ''
87
+
88
+ if hint && asked > hint_limit
89
+ show_hint = "\n#{hint_prefix} #{hint}"
90
+ end
91
+
92
+ response = ask "#{q_prefix} #{question}#{show_hint}"
93
+ correct = response == lesson['question']['expect']
94
+ end
95
+
96
+ if correct
97
+ say "<%= color('Correct!',:green) %>"
98
+ else
99
+ say "#{answer_prefix} #{lesson['question']['expect']}"
100
+ end
101
+ end
102
+ end
103
+ end
60
104
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lense
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20
4
+ version: 0.1.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manuel Zubieta
@@ -54,6 +54,7 @@ files:
54
54
  - README.md
55
55
  - Rakefile
56
56
  - bin/lense
57
+ - data/mfwvl1.yaml
57
58
  - lense.gemspec
58
59
  - lib/lense.rb
59
60
  - lib/lense/helpers.rb