hatching / vmcloak

Automated Virtual Machine Generation and Cloaking for Cuckoo Sandbox.
483 stars 120 forks source link

Proxy Support #109

Closed Kolano closed 7 years ago

Kolano commented 7 years ago

I think I'm seeing a problem with the "vmcloak install" command post setting up proxy environment variables...

vmcloak install seven0 vcredist
...
Traceback (most recent call last):
  File "/usr/local/bin/vmcloak", line 11, in <module>
    load_entry_point('VMCloak==0.4.4a1', 'console_scripts', 'vmcloak')()
  File "/usr/local/lib/python2.7/dist-packages/click-6.6-py2.7.egg/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click-6.6-py2.7.egg/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click-6.6-py2.7.egg/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click-6.6-py2.7.egg/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click-6.6-py2.7.egg/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/VMCloak-0.4.4a1-py2.7.egg/vmcloak/main.py", line 290, in install
    a.ping()
  File "/usr/local/lib/python2.7/dist-packages/VMCloak-0.4.4a1-py2.7.egg/vmcloak/agent.py", line 36, in ping
    return self.get("/", timeout=5)
  File "/usr/local/lib/python2.7/dist-packages/VMCloak-0.4.4a1-py2.7.egg/vmcloak/agent.py", line 22, in get
    return requests.get(url, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 518, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 639, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 514, in send
    raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='10.1.10.23', port=3128): Read timed out. (read timeout=5)

Proxy details set via the standard HTTP_PROXY / HTTPS_PROXY / http_proxy / https_proxy environment variables. Other commands utilizing the proxy seem to work out...

wget https://cdn.arstechnica.net/wp-content/uploads/2016/02/5718897981_10faa45ac3_b-640x624.jpg
--2017-05-23 21:56:31--  https://cdn.arstechnica.net/wp-content/uploads/2016/02/5718897981_10faa45ac3_b-640x624.jpg
Connecting to 10.1.10.23:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 97530 (95K) [image/jpeg]
Saving to: ‘5718897981_10faa45ac3_b-640x624.jpg’

100%[===================================================================================================================>] 97,530      --.-K/s   in 0.02s

2017-05-23 21:56:31 (3.99 MB/s) - ‘5718897981_10faa45ac3_b-640x624.jpg’ saved [97530/97530]

This seems to lock the VM causing later commands to generate snapshots to fail...

DEBUG:vmcloak.vm:Running command: ['/usr/bin/VBoxManage', 'createvm', '--register', '--name', 'vm1', '--basefolder', '/home/pass/.vmcloak/vms']
DEBUG:vmcloak.vm:Running command: ['/usr/bin/VBoxManage', 'modifyvm', u'vm1', '--ostype', 'Windows7_64']
DEBUG:vmcloak.vm:Running command: ['/usr/bin/VBoxManage', 'modifyvm', u'vm1', '--ioapic', 'on', '--cpus', '2']
DEBUG:vmcloak.vm:Running command: ['/usr/bin/VBoxManage', 'modifyvm', u'vm1', '--mouse', 'usbtablet']
DEBUG:vmcloak.vm:Running command: ['/usr/bin/VBoxManage', 'modifyvm', u'vm1', '--memory', '2048']
DEBUG:vmcloak.vm:Running command: ['/usr/bin/VBoxManage', 'modifyvm', u'vm1', '--vram', '16']
DEBUG:vmcloak.vm:Running command: ['/usr/bin/VBoxManage', 'storagectl', u'vm1', '--add', 'ide', '--name', 'IDE']
DEBUG:vmcloak.vm:Running command: ['/usr/bin/VBoxManage', 'modifyhd', u'/home/pass/.vmcloak/image/seven0.vdi', '--type', 'multiattach']
VBoxManage: error: Medium '/home/pass/.vmcloak/image/seven0.vdi' is locked for writing by another task
VBoxManage: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component Medium, interface IMedium, callee nsISupports
VBoxManage: error: Context: "COMSETTER(Type)(DiskType)" at line 556 of file VBoxManageDisk.cpp
ERROR:vmcloak.vm:[-] Error running command: Command '['/usr/bin/VBoxManage', 'modifyhd', u'/home/pass/.vmcloak/image/seven0.vdi', '--type', 'multiattach']' returned non-zero exit status 1
Traceback (most recent call last):
  File "/usr/local/bin/vmcloak", line 11, in <module>
    load_entry_point('VMCloak==0.4.4a1', 'console_scripts', 'vmcloak')()
  File "/usr/local/lib/python2.7/dist-packages/click-6.6-py2.7.egg/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click-6.6-py2.7.egg/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click-6.6-py2.7.egg/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click-6.6-py2.7.egg/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click-6.6-py2.7.egg/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/VMCloak-0.4.4a1-py2.7.egg/vmcloak/main.py", line 489, in snapshot
    hostname or random_string(8, 16), adapter, vm_visible
  File "/usr/local/lib/python2.7/dist-packages/VMCloak-0.4.4a1-py2.7.egg/vmcloak/main.py", line 416, in do_snapshot
    m, h = initvm(image, name=vmname, multi=True, ramsize=ramsize, cpus=cpus)
  File "/usr/local/lib/python2.7/dist-packages/VMCloak-0.4.4a1-py2.7.egg/vmcloak/main.py", line 56, in initvm
    m.attach_hd(image.path, multi=multi)
  File "/usr/local/lib/python2.7/dist-packages/VMCloak-0.4.4a1-py2.7.egg/vmcloak/vm.py", line 113, in attach_hd
    self._call("modifyhd", hdd_path, type_="multiattach")
  File "/usr/local/lib/python2.7/dist-packages/VMCloak-0.4.4a1-py2.7.egg/vmcloak/vm.py", line 40, in _call
    raise CommandError
vmcloak.exceptions.CommandError
jbremer commented 7 years ago

Ah, yes, we had a similar "issue" at some point in Cuckoo. Let me attempt to fix it for you.

jbremer commented 7 years ago

Please find the untested commit above. You can install it with pip install vmcloak==0.4.4a2. Please let me know if that solves your issue :-)

Kolano commented 7 years ago

Yes, things seem to work out with 0.4.4a2.

Kolano commented 7 years ago

BTW, it looks like info on the actual install of VMCloak is missing from README.md. The prereq's are covered but not the VMCloak install itself. May want to document: "pip install vmcloak" there.

jbremer commented 7 years ago

Done, thanks!