If a Windows laptop with an encrypted hard disk is stolen, can the contents be accessed by a professional hacker? In other words, how easy is it to break into Windows without having the passwords for any of the users configured in the computer?

The answer to your question is that it depends on a number of factors.

What disk encryption product is in use?  Does it make use of full disk encryption, or does it just encrypt parts of the disk (e.g. the users home directory)
Are there any known vulnerabilities in the disk encryption product in use?
What strength of password was used by the user of the stolen machine?
Did the user do anything very daft, like having the password on a bit of paper in their bag.
Does the disk encryption product allow for effectively offline attacks, or can it enforce a lockout policy such that only a limited number of guesses are allowed before the data is destroyed?
How determined and well funded are the attackers?  In the case of government level attackers they may have a means of bypassing/backdooring the software.

So ultimately it depends.  In the general case an unsophisticated attacker getting access to a full-disk encrypted drive protected with a strong password that he doesn't have, probably won't be able to compromise it, but there's a lot of variables at play.

Edit : per the comments below the list above isn't exhaustive, but hopefully provides an idea of some of the potential variables at play.


Viability of simplified JWT Our team has been building a custom distributed authentication mechanism, and I wanted to ask if this approach is actually viable. The approach is a dumbed down version of Jason Web Token (JWT). Assuming the user has identified himself to an authentication server, the server creates this payload:

{
  "iss": issuer (the authentication service that authenticated the user)
  "aud": audience (the resource service permitted to accept this token)
  "exp": expiration time
  "sub": subject (the user id)
}

The authentication server then signs this payload (hardwired to libsodium) and creates a token containing the payload and the signature. Then, any service/audience that wishes to accept these tokens can identify the user and verify it with the authentication server's public key. By specifying the audience, it prevents one resource server from replaying the token to another.

Is this reasonably secure?  Anything blaring stand out?

Your scheme looks just like a JSON-serialized client-side certificate with all the usual bells and whistles - it includes issuer, subject, validity period, and usage.

To securely use authentication tokens, one must meet at least the following 4 requirements.

The token is cryptographically unforgeable (by any reasonable adversary).
The authentication server (authentication source) must correctly implement access control(s).
The service hosts are honest.
The token cannot be reused past certain reasonable amount of time.

The part I suggest look into would be defence against dishonest servers. Possible attacks include man-in-the-middle data capturing and modification. This should be the responsibility of the client who must verify the authenticity of the servers.


VPN from inside a company I recently had to bypass my company policy by establishing a VPN connection from a LAN device (raspberry pi) located inside my company, to a WAN server.

As devices accessible from outside must be placed in the DMZ, I couldn't get a proper authorization to do this. In fact, it is too complex and it requires to many approvals. So, because I am lazy, I am just using openvpn to connect my Raspberry Pi to the outside through a virtual machine located on the cloud. Then from this VM I can reach my device without opening any port on the master firewall.

Just to avoid any problem with the IT, I am not using the standard 1194 port, but a more standard one : 443.

With this I realized how weak is that concept of DMZ. Even with a strong firewall, it is still possible to place a spying mole inside a company. Is this my company IT security policies really bad or is this just really hard to prevent such mechanism to be put in place?

"from a LAN device (raspberry pi) located inside my company"

Depending on how strict your company or any company is, LAN connections to the Companies infrastructure should not be that easy. Some companies automatically block ports on employees desks, only when needed then its opened by the sysadmins.

"using OpenVPN to connect my Raspberry Pi to the outside through a virtual machine" ....
"Just to avoid any problem with the IT, I am not using the standard 1194 port, but a more standard one : 443."

Again, it varies from companies to companies on how strict their outbound connections are. Just so happens these connections was allowed & just so happen that you were on a network that allows internet access hence 443 being up. They can't just block that, you were able to go out because they allowed you to go out!
To determine the security posture of a company stems from its purpose of its different segment of networks, internet-facing networks, intranets etc.
There's a reason why there are these measures in place, the company placed a certain level of trust on you. You see anything wrong here?

"As devices accessible from outside must be placed in the DMZ, I couldn't get a proper authorization to do this. In fact, it is too complex and it requires too many approvals. So, because I am lazy, I am just using..."

Employees are the weakest link in any company and you've just proved that.


Decrypting possibly compromised Veracrypt hard drive I have a Veracrypt encrypted hard drive, a system drive encryption with the operating system.

The laptop is possibly compromised, which is why I can't decrypt it directly on the laptop I don't know of a way to confirm  or deny if there's an evil maid attack.

I need to know if taking the hard drive out of the laptop, connecting it another machine and decrypting it like that would cause any security risk.

Thank you

Yes, because you're connecting to the machine meaning that the machine is mounting the drive. If possible maybe use a virtual environment to access it while not allowing the virtual environment to access your files. Even then there are ways around virtual environments. Your best bet is to use a device you only plan on using once unless you're 100 percent certain that you have a controlled environment for such activity and that nothing else can be compromised.


Public Availability of a good Dataset in PCAP (TCPDUMP) format for IDS/IPS testing I am trying to pass good reputable malicious traffic from an IPS. There are several sources on internet to explore datasets like the oldest I think DARPA set (not available in pcap format and not that efficient for modern day use) or NSL-KDD dataset etc. Here is a good link I found about options that I can look into. However none of them has dataset available in pcap format. Is there any reputable dataset available in PCAP or TCPDUMP or convertable to PCAP?

Here is a list of some of the ones I use:

https://www.netresec.com/?page=PcapFiles
https://iscxdownloads.cs.unb.ca/iscxdownloads/CICAndMal2017/PCAPs/
https://github.com/bro/bro/tree/master/testing/btest/Traces
http://traces.cs.umass.edu/index.php/Network/Network
https://github.com/markofu/pcaps
https://ant.isi.edu/datasets/requests.html
https://mcfp.felk.cvut.cz/publicDatasets/

In some of the you need to ask for permission.


Receiving mails with strange PGP Key ID I have received encrypted emails which I can not decrypt because the key used for encryption seems not to be correct.

Usually I have a key ID with 8 hex characters. This key can be found on public keyservers.

The emails I've received recently state a value which is different from my public key ID. Enigmail security info:

gpg: decryption failed: No secret key
Note: The message is encrypted for the following User ID's / Keys:
0xYYYYYYYYYYYYYYYY <my email address>

So it states a 16 character hex value which is not similar in any way to my public PGP key ID. However, using this hex value on the search function of  a keyserver, I find my email address with my usual public key info. I still can't see the 16 character hex value among that information.

Can anyone tell me what's it with that strange hex value? What's the relation to my PGP key?

The reason was that gnupg resp. enigmail didn't ask for the passphrase in the first place. I figured out that I needed to install pinentry which provides the dialog for entering the GnuPG passphrase.

For some reason it worked without pinentry before.
I guess that a Linux Mint update removed a program responsible for the dialog before and didn't replace it properly (I've been using the current installation for quite a while, starting with Mint 14 and always updating to the next release).

I still wonder about my long key ID shown by enigmail via details -> Enigmail Security Info: the short value is not a part of the long ID, as it should be according to this thread
and does not have any similarity.


Chrome extension sends browsing information When visiting a url in Chrome, I saw in Fiddler, after the responses, calls to:

http://api29.datarating.com/related
http://api29.datarating.com/service2

For example after going to http://www.google.com

I have this in Fiddler: http://api29.datarating.com/service2

with body:

  e=Y3oweE56azNKbTFrUFRJeEpuQnBaRDF5VlRselNXeHhVRXBWZEU1bGNWa21jMlZ6Y3oweE9ESTJOakEwT1RNMU16UXdOVGd6TkRBbWMzVmlQV05vY205dFpTWnhQV2gwZEhCekpUTkJMeTkzZDNjdVoyOXZaMnhsTG1SbEx5VXpSbWRtWlY5eVpDVXpSR04wY213bE1qWmxhU1V6UkRZNFNWcFZOV1kwU25OVFdDMUJZbEZ6TkVkUlEwRWxNalpuZDNOZmNtUWxNMFJqY2lad2NtVjJQV2gwZEhCekpUTkJMeTkzZDNjdVoyOXZaMnhsTG1SbEx5WjBiWFk5TkRBd01pNHhKblJ0WmoweEpuTnlQV2gwZEhCekpUTkJMeTkzZDNjdVoyOXZaMnhsTG1OdmJTOD0%3D

which is Base64, decoded to another Base64 string:

  cz0xNzk3Jm1kPTIxJnBpZD1yVTlzSWxxUEpVdE5lcVkmc2Vzcz0xODI2NjA0OTM1MzQwNTgzNDAmc3ViPWNocm9tZSZxPWh0dHBzJTNBLy93d3cuZ29vZ2xlLmRlLyUzRmdmZV9yZCUzRGN0cmwlMjZlaSUzRDY4SVpVNWY0SnNTWC1BYlFzNEdRQ0ElMjZnd3NfcmQlM0RjciZwcmV2PWh0dHBzJTNBLy93d3cuZ29vZ2xlLmRlLyZ0bXY9NDAwMi4xJnRtZj0xJnNyPWh0dHBzJTNBLy93d3cuZ29vZ2xlLmNvbS8=7

which decodes to:

  s=1797&md=21&pid=rU9sIlqPJUtNeqY&sess=182660493534058340&sub=chrome&q=https%3A//www.google.de/%3Fgfe_rd%3Dctrl%26ei%3D68IZU5f4JsSX-AbQs4GQCA%26gws_rd%3Dcr&prev=https%3A//www.google.de/&tmv=4002.1&tmf=1&sr=https%3A//www.google.com/;

that obviously contains the URL I just visited.

By enabling and disabling the extensions in Chrome, I found that it was the extension:

SpeakIt! 0.2.91

Web Store Link

**Is this allowed / legal?**

The question should have been Can we block this or are their extensions to check other extensions ?  as pointed out.

I see some solutions :

Analyze the code of the extension with https://github.com/Rob--W/crxviewer/

Use an 'Adblock' kind of strategy with disconnect me https://disconnect.me/

Browser privacy modes. etc

For protecting your privacy, you could use another Open Source addon which protects you from the various tracking methods employed in today's method. The link to download is below :-

https://disconnect.me/

I am also currently using this addon, nice tool, save bandwidth, secures wifi, loads pages faster etc.

Also, the main feature that it completely eliminates the trackers so that the bandwidth is also saved. It also very nicely visualizes the blocking it is doing along with detailed information.

Furthermore, you can also protect your privacy by opening the web pages in the Icognito or the Private Browsing mode of your browser as by default in the Private Browsing mode, the addons are disabled and hence no tracking of your web page visiting atleast by the addons.


How do living politicians protect their readily obtainable signatures from misuse? Many living politicians' signatures are found online or can handily be acquired (You can write them, and their letters will contain their signature). Thus do they use a different signature for personal private documents? If not, how can they guarantee that their signatures aren't replicated without their consent? I deliberately quote signatures of lesser-known politicians.

The Rt Hon. George Osborne MP

The Honourable Rona Ambrose PC

Some members of the Minnesota House & Senate

They don't. Outside the lowest security scenarios, signatures aren't intended to be security feature to prevent forgery.

In most cases, putting a signature on paper is just ceremonial. The actual details/decision may have been recorded through other means. For example, depending on what exactly is being signed and how sensitive the matters is, by witnesses (whether by sworn individuals or even just casually), through publications in mass media, or filed into a register on a trusted computer system/filing cabinet.

In the latter case, the paper you receive, even when physically signed with ink and even if it's the paper signed when you shake hands in agreement, might just be considered a copy of the true records in the registry you don't really see. This is similar to how a birth/death/university degree certificate is really just a copy of the registration detail in your civil/university records, the only really important detail in that piece of paper is the record number rather than the signature. A person who has reasonable suspicion that the letters might be a forgery should confirm with the office of the relevant signer to check for its authenticity. For important, formal letters, there may be a filing number for the file that you can cite to confirm the content of the letter.


Can an intermediate CA be trusted like a self-signed root CA? Is it possible within the limits of the X.509 specification to mark an intermediate CA as trusted for a specific purpose, e.g. to verify a VPN, HTTPS etc. server key, just like it would work with a root CA?

My VPN client(s) all have a way to explicitly provide a trusted CA certificate, which is used to verify the VPN server's authenticity. As long as I provide the root CA certificate, this works as expected - the certificate is trusted. (The intermediate certs are provided as part of the TLS handshake.)

However, I'm using an intermediate CA, and would very much like to provide that certificate, instead of the root CA. In my understanding of X.509, that should work:

The VPN server's key is signed by the intermediate CA, and as far as I understand X.509, that's all that is required to establish a trusted chain.

But in practice, it doesn't work: My VPN client doesn't connect.

In addition to VPN, I've tried this with 802.1X/EAPOL authentification, and multiple clients - with the same results: providing the root CA cert to the client works; providing my intermediate CA cert doesn't.

Is that by design, or is it just how most implementations work?

(I use a TLS based VPN, but as I've also tried it with 802.1X and TTLS, it seems to be related to TLS or X.509, and not to my specific VPN client/server architecture.)

Update:
I've fond an OpenSSL commit that implements adding non-self-signed CA certificates as trust anchors. Unfortunately, this is not yet included in any release version, so all the proposed workarounds in the comments still apply.

Update 2:
OpenSSL now contains this option in the release version, starting from 1.0.2. The corresponding flag for the command line client is partial_chain, and the programmatic flag seems to be X509_V_FLAG_PARTIAL_CHAIN.

Additionally, I recently had to verify server certificates in Java: At least in the JDK 1.8 version of the Sun JSSE provider's SSL implementation, adding a leaf certificate to the default TrustManager works without any special configurations, and verification succeeds as if the root CA had been provided.

A root CA is actually an illusion. In X.509, there are trust anchors. A trust anchor is, mostly, a name and a public key, which you know a priori and that you trust. Representation of that name and that public key as a "certificate file" (traditionally self-signed) is just a convenient way to keep the trust anchor as a bunch of bytes.

As per X.509, a CA is "intermediate" only if you do not trust it a priori; it is not an intrinsic property of the CA. What you need to do is convince your software to consider the CA as a trust anchor. One possible trick is to reencode the relevant data (the CA name and public key) as a (purportedly) self-signed certificate. Note that the self-signature is just a Tradition; it is there mostly because the file format for a certificate has a mandatory field for a signature. For a "root" CA, this signature has no significance (it makes little sense to verify it, since it would buy you nothing security-wise). Therefore, applications which use root CA certificates rarely verify that the signature is "self".

Therefore, you could build a custom "self-signed" certificate with the name of your "intermediate CA" as both SubjectDN and IssuerDN. For the signature, just put random junk bytes of approximately the right size (256 bytes for a 2048-bit signature). Then, try to set this pseudo-self-signed certificate as a root: chances are that it will work with your VPN. Alternatively, create your own root CA, and emit an extra certificate for the intermediate CA (you do not need the cooperation of the intermediate CA for that, you just need its name and public key, and you have these, in the intermediate CA certificate).


Validate that Web Service is authentic If I have a web service (REST API, RPC, etc) that I open source, how can I prove to the user that the service they are connecting with is indeed the same one whose source I published. I am envisioning an endpoint they could query and get some kind of hash/signature they can validate.
The problem seems that the API service could easily forge the returned token.

This cannot reliably be done. There is no way to prove without a doubt that the site operator is telling the truth or not forging some value.
Even if you were able to prove that the source code is identical to that which is published, that doesn't really say much since 3rd-party or system libraries could be tampered with without affecting the application source.


How to protect against exploitation of email addresses from an mistakenly expired domain? I have a domain name that I have registered for a long time. Due to a combination of bad luck and oversight, the domain name expired and was rebought by somebody else. I am attempting to buy the domain name back, but I am not sure if I will be able to.

My domain is associated with a google apps account. Could the new owner of the domain in theory recreate an existing email address and intercept future emails people attempt to send to me?

For example, if my current email is x@mydomain.com, could the new domain owner create x@mydomain.com and receive future emails people try and send to me?

Since you don't own the domain, all of what is done with it can't be yours, including the emails.

Since the new owner possess the domain, he can manage the MX DNS of this domain (used for Email services) and do whatever he wants to do with this, including creating any accounts@mydomain.com, redirect them to whatever/whoever he wants, etc.

So he's able to create one of your old email, and use it. It's not an attack since he's the owner.

The only "timelapse" you have is the DNS propagation. But I assume that if you get back your domain, it won't be made in less than hours after the purchase.

To be clear : He's now the owner, so he can do whatever he wants on it.


Security considerations in providing VPN access to non-company issued computers There have been a few people at my office that have requested the installation of DropBox on their computers to synchronize files so they can work on them at home. I have always been wary about cloud computing, mainly because we are a Canadian company and enjoy the privacy and being outside the reach of the Patriot Act.

The policy before I started was that employees with company issued notebooks could be issued a VPN account, and everyone else had to have a remote desktop connection. The theory behind this logic (as I understand it) was that we had the potential to lock down the notebooks whereas the employees home computers were outside of our grasp. We had no ability to ensure they weren't running as administrator all the time / were running AV so they were a higher risk at being infected with malware and could compromise network security.

With the increase in people wanting DropBox I'm curious as to whether or not this policy is too restrictive and overly paranoid. Is it generally safe to provide VPN access to an employee without knowing what their computing environment looks like?

I don't consider your policy overly restrictive or paranoid at all. It's right to consider VPN client computers to be less trusted than your on-premise LAN-attached computers. It's a sound practice to have firewalls or other control devices in place to limit the traffic allowed to move to/from that semi-trusted VPN security zone into more trusted areas of the network. VPN access from domain-joined, company-owned computers is, to my mind, more trustworthy than VPN access from home computers. Depending on the authentication mechanisms used by the company-owned computers, however, I might be inclined to limit their access as I would home computers. If simply swiping a company-owned laptop grants VPN access without additional authentication, for example, I'd be locking-down the network access of company-owned computers from the VPN, too.

The root issue you're getting at, though, is a policy issue and not a technical one. Whether or not employees should be permitted to replicate company data into non-company owned data storage mechanisms is a policy decision your management needs to make. It's not always a truism that a non-company owned data storage repository is less secure but it's almost always something that the company has no ability to easily audit the security of. Taking security on faith w/o auditing is a bad idea.


Is my network being sniffed? Is there any way to find out if someone who is connected to my network is sniffing packets?
There is a way with nmap if his card is in promiscuous mode but what if it is passive?

The thing about passive sniffing is that you don't get other people's network traffic unless you're either in a position to see that traffic due to network topology (e.g. you're sniffing a trunk port) or are doing network spoofing (e.g. ARP spoofing) that causes packets to be sent to your device.

If they're doing the latter, you just need to look out for ARP spoofing attacks. Many IDS solutions have features that can detect ARP spoofing. A really low-quality cheap way to catch rogue devices is to just look for packets coming from MAC addresses you don't recognise. Better solutions match up the known MAC addresses to physical ports and devices, so that unusual routing can be spotted quickly.

I can't think of any way to detect entirely passive sniffing per se, but it would certainly be possible to probe for rogue devices on your network by doing ARP scans, DHCP probes, or application-layer broadcasts (e.g. on 192.168.x.255) and looking for responses from devices that you don't recognise.


What are the pros and cons of site wide SSL (https)? What are the pros and cons of encrypting all HTTP traffic for the whole site through SSL, as opposed to SSL on just the login page?

Since most of the other answers here deal with the downsides of site-wide SSL (mainly performance issues - btw these can easily be mitigated by offloading the SSL termination, either to an SSL proxy box, or an SSL card), I will point out some issues with having only the login page over SSL, then switching to non-SSL:

The rest of the site is not secured (though this is obvious, sometimes the focus is too much on just the user's password).
The user's session id must be transmitted in the clear, allowing it to be intercepted and used, and thus enabling the bad guys to impersonate your users. (This is mostly what the Firesheep hubbub was about).
Because of the previous point, your session cookies cannot be marked with the secure attribute, which means that they can be retrieved in additional ways.
I have seen sites with login-only-SSL, and of course neglect to include in that the Forgot-password page, the Change-password page, and even the Registration page...
The switch from SSL to non-SSL is often complicated, can require complex configuration on your webserver, and in many cases will pop up a scary message for your users.
If it's ONLY the login page, and f.e. there is a link to the login page from your sites home page - what is to guarantee that someone won't spoof/modify/intercept your homepage, and have it point to a different login page?
Then there is the case where the login page itself is not SSL, but only the SUBMIT is - since that's the only time the password is sent, so that should be safe, right? But in truth that removes from the user the ability to ensure ahead of time that the password is being sent to the correct site, until its too late. (E.g. Bank of America, and many others).


Securely Store Credentials for Web Application Services in Apache We are running a web application in python using wsgi with apache2, and must submit to a penetration test. The testers will be exploring the potential for damage if the attackers gain shell access as the apache user.

Currently, the damage potential is enormous, as we have the credentials for the database, s3 service, etc. all stored in a text file readable by the apache user. This seems to be the default advice when setting up these sorts of applications, but is there a more secure way to do this?

I was thinking of using apache (as root) to pass environment variables with setenv to the wsgi app, but is this actually more secure? Any advice for this?

It really depends what your threat model is.

If we take away everything else and just think about the application, there is basically nothing more you can do to really improve the security of the app. Stay away from esoteric solutions and focus on what is more maintainable and clean. I want to stress clean, as usually security disaster arises from messy situations.

Anyway: if the attacker gets remote code execution under the application user, you cannot restrict access to the configuration in any way - the app has to access it, so can the attacker. If he gets file read capabilities, then storing in a database will protect you from disclosure - even if you have to store the credentials of the db in a file, the attacker won't hopefully be able to leverage those. If he gets SQL injection, access to the db (in the unlikely case this does not translate into remote code exec) then having them in a file is safer. Really, it depends on how your application is designed.

Running Apache as root is really a bad idea (well, disabling the privileges drop I mean). Instead of implementing one-time solutions focus on stuff that is going to stay in place without more hacks and get the benefits of the pentest. passing stuff via the stdin for instance will make it very hard for the testers to retrieve the credentials, but in the long run you'll likely end up with a bash script doing the job... which is by far worse than the other solutions.


Can viruses actually inject their code in other processes? Can a virus really inject its own code into a process so it stays on your computer permantly? The only way to actually remove it is to reinstall your OS. My question is how can it do that without damaging the file or process?

You can use DLL Injection to inject code into other processes without affecting any other data
(depending on the method, of course).

Other ways include renaming and moving legitimate files and replacing them with infected versions, startup entries, etc., but those are easily removable manually.

The only way that I can think of to permanently infect without personally using OS patches or other data modifications is to use a startup entry to load a rootkit driver such as Migbot or FU that also includes function hooks to hide files and registry entries, making it impossible to remove manually.

However, this type of rootkit usually uses kernel patches, which modify the binary OS data on disk (making a reinstall necessary to completely disinfect) and defeats the whole purpose of not modifying data.

The only alternative is to stay out of the kernel and use a normal process to run the malware and use Windows Message hooks or something similar to apply hooks without modifying data.

There is a downside to this approach though... Userland hooks are very easy to detect, compared to kernel OS patches.

So, therefore, it is possible to have malware that does not modify data, but it is easily detected and removed by any half-aware antivirus/rookit software, which means that not many (if any!) in the wild malware will use non-modifying approaches because patches and such are much better from a stealth standpoint (and sometimes even easier than non-modifying hooks!).


Anonymized posting mechanism for members-only-post mailing lists Suppose you are administering a mailing list where only members/subscribers can post; but you want those members to be able to occasionally post some content to the list anonymously. (*)
Now, in an any-one-can-post list, you don't really have to do much: A subscriber can set up a dummy email address and post from there, and that works (albeit is a bit incovenient). But for the members-only-post scenario, I would need some sort of an anonymizer, which on one end can receive emails/files from list members, and on the other end authenticate as the user of some email account and post to the list with a subscribed address (e.g. mylist-anonymizer-bot@mailprovider.com).
My question: Are there commonly-used mechanism for achieving this? If not, or if they're commercial and expensive - how difficult would it be to set something like this up, and can you sketch how it would work (I mean, with more detail than what I described)?
Notes:

I suppose there will is also the issue of spoofing of the anonymizer account. An answer which address this as well would be great, but I'm fine with just ignoring this concern for the purposes of this question.
Do not assume control or root access to the server running the list management software. Suppose it's some large mailing list provider service.
Most discussions on the list are not to be anonymized.

(*) - By "anonymously" I don't mean in the sense of "no person or group can ever be able to trace back the email except with millions of years of computation etc.", I mean "inspection of the mail message and its headers will not indicate who the message originated with, without a significant, government-agency-level effort of traffic analysis".

mailman mailing list already have a setting for that, see anonymous_list. This setting can be set by a list administrator from the web interface, it doesn't need access to the server.
On the other hand, if what you want is that your members are able to write to the list from new, temporary mails (so that even the mailing list doesn't know the poster identity), you can set a moderator password and let that be known by all subscribers.
Anyone in the group can by providing that password in a header so the email passes, or by directly logging in the web interface themselves and approving the held message they just sent.


How to create a OSx pen testing environment I currently use OSx Maverick, I wish to use this machine as my pen testing machine as I also prefer coding on this machine. My current pentest machine is running Kali.

Can anyone give me good tips on setting up my Mac to be my pentesting machine? and what tools you would recommend?

Whichever tools you are used to using on Kali, find OS X versions for them, install and use.
For appsec, Some tools like Burp Suite are platform independent as Burp runs on JAVA which i primarily use and the commercial version is reasonably priced too, OWASP ZAP, w3af, BeEf framework, Nikto etc are all available for download too.
If u are referring to network pentesting, u will find NMAP pre-installed, and u can download Nessus from their website and netcat also comes pre-installed. U will find the move to OS X quite similar as i moved from Backtrack to OS X myself, most tools u are used to should be available on OS X too.
Just install and go with it.

You can look at downloading metasploit here:
https://community.rapid7.com/docs/DOC-1037

If there is something you are used to on other *nix system, and u cant download it for Yosemite, use :

Homebrew:
http://brew.sh/
Macports
https://www.macports.org/

, these will give u all the tools you seek and u can choose which ones to install. I would suggest, discovering your needs and then proceeding to download whatever you need, whenever you need it!

Good luck for your journey!


Certificate Chains When Importing Signed CSR Response I'm interfacing with a secure web service, and authenticating using a client certificate.  I'm confused about step #3 in the client configuration:

Generate a private key into keystore
Generate a CSR to have your public key signed
Import the Certificate Authority certificate into your keystore so that a proper certificate chain can be established when you import your signed certificate in Step 4.
Import the certificate provided in response to the CSR

Steps 1, 2, and 4 all make sense.  Step 3 makes no sense to me.  I already have my private key in the keystore, and the certificate is a statement that xyz third party has signed my keypair.  If I skip step three, I get an error: "keytool error: java.lang.Exception: Failed to establish chain from reply".  I don't understand what it is validating / why such a validation is necessary.  Hypothetically, if I happened to import a CSR response from someone I didn't trust, it doesn't seem like that grants any privileges / does any damage.

The certificate imported in step #3 is NOT related to the certificate chain used to validate the server's identity when the client connects (that certificate is separately imported into my truststore).  The certificate in step #3 is required in order to import the response to my CSR.

Why is step 3 necessary?

In SSL, when the client sends its certificate, it actually sends a certificate chain, from root down to the client's certificate (the root itself needs not be sent, but intermediate CA shall be sent; see the standard there and there). To rebuild such a chain, your software apparently needs you to import the CA certificate in the keystore.

Also, to some extent, validating the certificate received from the CA makes sure that the certificate was not altered during its transit. Nominally, your certificate is not for you; it is something you show to other people (or machine) and they validate it; but you prefer it when you can check that you have a "good certificate" to show.


Import nmap scan results into OpenVAS I have recently been introduced to OpenVAS for scanning our network at work. I am familiar with nmap, and I am happy with it's performance when used stand-alone from the cli, through iptraf I can see it is scanning at speeds upwards of a thousand packets a second, however when scanning through OpenVAS I can't seem to break 30 packets a second, even with the nmap preferences set to scan 25 concurrent hosts with a --min-rate of 25 packets per second.

I would really like to first scan using nmap then import the results into OpenVAS for further vulnerability testing, Ideally having OpenVAS only probe the open ports that nmap reported.

I have been googling and googling and I have not found any clear instructions on how to import the results. IMO I would think this would be a pretty standard feature.

Any ideas on how I can import grepable or xml nmap results into OpenVAS for further penetration testing?

OpenVas now has the ability to import Nmap scan results in .xml format, which to me, is great. I like performing nmap scans outside of a vulnerability scanner because not only can I have greater control over some parameters such as "--top-ports" etc, but I re-use the results often (e.g. metasploit import) and prefer having them as "standalone files" for that reason.

To import them using Greenbone Assistant: select your scan configuration >> edit port scanners >> edit Nmap >>  import results file >> save.


Can IE be made to imitate the behavior of Chrome's KeyGen element? Is there any way I can repurpose existing ActiveX controls or functionality to get IE to work with the KeyGen element?

Assistance getting Safari to work with this optional HTML5 spec would be appreciated as well.

The simple answer is 'No'. http://lists.w3.org/Archives/Public/public-html/2009Sep/0043.html has a Microsoft engineer basically explaining why ("The problem with  is that it fails to address the requirements that people have for certificate enrolment today").
Depending on what you want to do - you may be able to get CertEnroll to produce a reasonable analog - have a look at this MSDN blog entry which contains a pretty detailed example of using JavaScript and the X509Enrollment ActiveX object.
Of course, all of these are dated 2009, but I couldn't find any evidence Microsoft had changed their thinking.
Safari also appears to have native support (http://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/HTMLTags.html#//apple_ref/doc/uid/30001262-keygen).


The safest way to access GMail on mobile devices There are three ways to access your GMail account on iPhone or iPad devices:
1. Use safari browser
2. Use Apple's default mail app
3. Use Google's Gmail app

What is the safest way to access gmail account? How about stored (downloaded) emails in case of app usage? Is there anything user can do in order to increase email safety (use SSL for example)?

All of these apps will use SSL in some flavor (probably https)  to contact Google.  Google doesn't provide another interface for good reason.

Everything can be compromised.  You can be hacked though your browser and it doesn't matter what device you are using.   Once the attacker is on your machine it doesn't matter if your email is encrypted.  The attacker can wait until you decrypt it,  or just take your password.


Is there a method to get plain-text from cipher-text in HMAC SHA-1, given that the key is known? This is technically not even an attack. We have all the resources at hand, except for the original plain-text. We have the cipher-text (to be converted back to plain-text), as well as the key.

The cipher-text stored in the DB is as follows: HKnvB41kkow+KkR4c7G/8vusmEM=

The hashing function used is as follows:

Public Shared Function EncryptPasswordInHash(ByVal password As String) As String
    Dim EncodedPassword As String = password
    Dim Hash As New HMACSHA1()
    Hash.Key = StrToByte(LicensingBLL.ENCRYPTION_KEY)
    EncodedPassword = Convert.ToBase64String(Hash.ComputeHash(Encoding.Unicode.GetBytes(password)))
    Return EncodedPassword
End Function

The key we have used is : "zooooooooooo123"

Is there any possible way to retrieve the plaintext with all the given information?

Nope
Generally speaking: No. Hashing is not encryption. Hashing is not reversible. At all. It always generates a fixed length output. So with an output fixed to say 32 characters, and an input of 33 characters, there is no possible way to reverse this. The information of that one character is irretrievably lost. -- And along with it all other characters.

Brute force feasible for small inputs
But: If you know, that your input is only digits 0-9 and there are only ever 3 of them, then you just try all 1000 of them, and yes, you have effectively reversed the hash. (By "Brute Force".)

There's no unlocking a keyed hash
Also: The "key" you use in a keyed hash is not the kind of key that will unlock anything. "Key" is really a bad, confusing name in that context. It is just one more input that is mixed with the regular data in a special way. -- After which all of it goes through the hash-function meat grinder and is turned into fixed length output.

Sidenote: Weird way to store passwords
You seem to be using HMAC to store passwords. This is unusual. And also it means that you're basically storing peppered, unsalted, low-round-count-hashed passwords. Peppered is good. (If the pepper is stored somewhere other than the hash itself.) Unsalted is always bad. Low-round-count-hashing is also bad. (Details: See this question: HMAC - Why not HMAC for password storage?) -- All of this will make it easier to brute force the hash if the key is known, but it must still be brute forced.


What features would you use to detect a backdoor or a bot installation? I was reading a document about logging and analysis. The document talks about statistical analysis and machine learning techniques to detect some attack scenarios. For instance, If you want to detect a Possible Brute Force Log-in, you might want to look at the following features:

Firewall Accepts, Multiple Failed Logins in a Row, At Least 1 Successful Login.

What is interesting for me is that these features are collected from different sources (Firewall, Source machine). I have a use-case where I am interested in detecting attacks that try to download and install backdoors. I have logs collected from IDS, Firewall, HTTP server and a Syslog server. I want to find some indicative feature that I can feed to my Machine learning Model. The problem for me is shown in the picture below:

This fellow researcher manually analyzed the logs and provided some useful insights. But he only used on source machine (Http). Specifically, the data field in these logs.
Does this mean that backdoors are hard detect by security devices? What if I want to use other features, as shown in the brute force example, to detect backdoors in an automated manner, what would you propose ?
PS: I only want some general ideas about these features. I know that backdoor detection can be hard. Fortunately, I only have to study the backdoor in the dataset I have x).
Bests.

In general security systems that use a machine learning approach are based on features, metrics or characteristics. Depending on the area (Anti-Virus, Anti-spam, NIDS) the characteristics are different. For example: In the area of Spam the subject will be a key characteristic as well as if the message have an attachment and the attachment could contain another file (zip, tar files). On the other hand, in the area of Anti-virus some of the characteristics could be the file type, some specific strings inside the binary, syscalls used and so on. And as you can guest for a NIDS the features could be completely different, packets up, TCP push, HTTP messages, URI content, and so on.

In general that type of articles are very dependent of the data-set used, so is easy for the authors fiddle a bit the results on them. Bear in mind that when this systems have false positives they need to find another characteristics that could differentiate with the false positive and this sometimes is hard to do it.

In the case of the back-doors you need to study the characteristics and the behavior of some of them and create your own characteristics, probably a network traffic features in combination of normal malware could be a good approach for start.


How to format Veracrypt external storage when you don't have the password? I've created this Veracrypt USB storage once and never used it. I've forgotten the password but I still want to use this storage.

What should I do? When I plug I can't mount it because I don't have the password and I need to mount it in order to format it/reset it.

You don't need to mount the encrypted drive if you just want to discard the data on it and make it usable again.
I would recommend using Rufus to reformat it when you're having difficulties doing it with Windows.
https://rufus.akeo.ie/
This will turn it back into a usable disk.


Windows Account Password Resetting process for large network I am working on large windows based network environment (Active Directory) and I have a requirement of implementing clear and secure password reset process for windows user. Especially management requested to use same process for all applications which are using in our factory.

Currently we ask them to raise help desk ticket and IT team will reset according to their request. But we have security issue on this process because if windows password is lost, he ask to raise ticket to another user. Therefore any user can request password change for someone else.

what would be technical solution and process to avoid this security issue and reset user password securely.

Currently we ask them to raise help desk ticket and the IT team will reset according to their request. But we have a security issue on this process because if widows password is lost he ask to raise a ticket to another user. Therefore any user can request a password change for someone else.

Indeed, in some companies, it's possible to request a password reset even by phone.

  what would be a technical solution and process to avoid this security issue and reset user password securely.

In theory, the service-desk should validate the requesting user - e.g. check the calling phone number or call back the user to a registered (company) phone

In our company, we have a self-service service (web page), where users could register their alternate phone numbers, emails (e.g. private emails), security questions. In that case, they could reset their domain password themselves.


GET request with different IPs I need to check vulnerability in my polling system. So I need to send GET requests but every time with different IPs. Can anyone suggest something?

Running as root with raw sockets will let you set whatever IP address you wish on your outgoing packets. Tools like hping3 include this functionality. You could write the binary GET request and feed it as an option to hping3, then specify the source address (or even --rand-source). That won't get you all the way, though.

Since we're talking about completing the full TCP connection, you'll need to take those lessons of raw sockets and write them into your own application (or find one that does this already). To be functional, your source machine's network card will need to be listening in promiscuous mode. You will also need to have your target's (the webserver) network route pumping all traffic directly to the network. The easiest way to to do that would be to make your source machine the default gateway.

Sockstress is one tool that sounds like it might fit the bill, but I'm not familiar with it.


Path Manipulation Vulnerability Currently I am working in code review process.
I have few doubts regrading Path Manipulation Vulnerability.
Some portion of the Path is already hard coded and with extension

public class ReadFile {

    public static void main(String args[]) throws IOException {
            String fname=args[0];
        fname="C:\\Users\\kutrivedi\\Desktop\\Ref\\"+fname+".txt";

        BufferedReader br = new BufferedReader(new FileReader(fname));
        for (String line; (line = br.readLine()) != null;) {
            System.out.print(line);
        }
        br.close();
    }
}

Questions:

1) Exploitation is Possible ?

2) If yes than How attacker exploit that functionality ?

3) Is there any payload to go to the back directory when directory wrote by developer ?

Thanks in advanced

Is it possible to exploit this code?

Yes.

  How can an attacker exploit this?

Path Traversal Vulnerabilities allow an attacker to choose a file that is not intended by the developer.

For example, your program has the path "C:\\Users\\kutrivedi\\Desktop\\Ref\\" + input + ".txt" hardcoded. If I entered foo as input, then the resulting file would be C:\\Users\\kutrivedi\\Desktop\\Ref\\foo.txt.

Of course, I could add more than just one word, such as foo\\bar, which would result in the following file being read instead: C:\\Users\\kutrivedi\\Desktop\\Ref\\foo\\bar.txt

So just by adding \\, I can traverse deeper into the file structure.

  Can an attacker traverse the file system up?

I can do that too, with the pseudo-directory ... Every directory has a pseudo-entry called .., which points to the parent. As such, if I enter ..\\foo, then the following path is created C:\\Users\\kutrivedi\\Desktop\\Ref\\..\\foo.txt, which will be resolved to C:\\Users\\kutrivedi\\Desktop\\foo.txt.

For example, if my payload is ..\\..\\..\\..\\foo, then I would now read C:\\foo.txt.

I could go further and print arbitrary files, as long as they had a .txt extension. Since this code was presumably written in Java, and Java does not terminate strings with a \0 character, there is no easy way to terminate the string earlier to skip the extension.

If, however, your programming language was built on null-terminating strings, my payload could read arbitrary files too, as long as the process had permission to read them:

..\\..\\..\\..\\Windows\\System32\\config\\SAM\0 will result in C:\\Windows\\System32\\config\\SAM.

  How can this be fixed?

The easiest way is to use a library or built-in framework, which deals with paths. Most libraries have checks to see if something is inside or outside a directory structure, so you can use those checks to see if the payload you are getting is trying to access a file it shouldn't.


Does Verizon Wireless LTE network have intrusion prevention capabilities? Can someone tell me whether or not Verizon Wireless's LTE network has an IDS/IPS capability? I'm trying to compare the security of their CDMA/LTE network to others that are GSM.

EDIT for clarity: I mean intrusion detection capabilities that would detect an outside attacker that is attempting to attack a VZW device. For instance: someone trying to guess the password for voicemail or spoofing an SMS from a device. I don't know if they exist but are there network attacks you can also defend against like an attacker doing something on the LTE network itself?

If you're talking about intrusion prevention in general, the answer has little to do with the wireless part of the network. Trying to "guess the password for voicemail" doesn't even require an antenna, on either end. Dig?

In any case, there is all kinds of security in these networks. Understanding the wireless standards, the PSTN, service policies, relevant laws, regulations, industry practices, and common sense will tell you much about what the big providers are doing for security. However if you want to actually compare the security practices and features of different operators' networks, there are basically only 2 ways to get that depth of information:

Get a job doing security at the network operator
Attempt to break their security yourself

Any claims made outside these 2 contexts should be considered marketing or hearsay.

TL;DR: Verizon has a huge in-house IDS/IPS system that is already broken by Chinese hackers. Maybe.


enumeration and MS DCERPC Enumeration, enumeration, and even more enumeration is the generic pentesting mantra, but enumeration is worthless if you can't read the results.

I came across the Windows RPC service, where metasploit returns results such as

msf auxiliary(endpoint_mapper) > run

[*] Connecting to the endpoint mapper service...
[*] 12345778-1234-abcd-ef00-0123456789ac v1.0 TCP (49179) 192.168.41.221
[*] 2f5f6521-cb55-1059-b446-00df0bce31db v1.0 PIPE (\pipe\tapsrv)
\\XXXXX [Unimodem LRPC Endpoint]
[*] 2f5f6521-cb55-1059-b446-00df0bce31db v1.0 LRPC (tapsrvlpc) [Unimodem
LRPC Endpoint]
[*] 2f5f6521-cb55-1059-b446-00df0bce31db v1.0 LRPC (unimdmsvc) [Unimodem
LRPC Endpoint]
[*] 906b0ce0-c70b-1067-b317-00dd010662da v1.0 LRPC
(LRPC-d08ef1fa6d632a075d)
[*] 906b0ce0-c70b-1067-b317-00dd010662da v1.0 LRPC
(LRPC-d08ef1fa6d632a075d)
[*] 906b0ce0-c70b-1067-b317-00dd010662da v1.0 LRPC
(LRPC-d08ef1fa6d632a075d)
[*] 906b0ce0-c70b-1067-b317-00dd010662da v1.0 LRPC
(LRPC-d08ef1fa6d632a075d)
[*] 906b0ce0-c70b-1067-b317-00dd010662da v1.0 LRPC
(OLEEE86D47927814F3C96D95E0A7601)
[*] 906b0ce0-c70b-1067-b317-00dd010662da v1.0 LRPC
(LRPC-bec9533644f8432732)
[*] 367abb81-9844-35f1-ad32-98f038001003 v2.0 TCP (49164) 192.168.41.221
[*] 12345678-1234-abcd-ef00-0123456789ab v1.0 LRPC
(LRPC-9d7905a8727cb4e919) [IPSec Policy agent endpoint]
[*] 50abc2a4-574d-40b3-9d66-ee4fd5fba076 v5.0 TCP (49155) 192.168.41.221
...

or

msf auxiliary(management) > run

[*] UUID e1af8308-5d1f-11c9-91a4-08002b14a0fa v3.0
[*] Remote Management Interface Error: DCERPC FAULT => nca_s_fault_ndr
[*]      listening: 00000000
[*]      killed: 00000005
[*]      name: 00010000000000000100000000000000d3060000
[*] UUID 0b0a6584-9e0f-11cf-a3cf-00805f68cb1b v1.1
[*] Remote Management Interface Error: DCERPC FAULT => nca_s_fault_ndr
[*]      listening: 00000000
[*]      killed: 00000005
[*]      name: 00010000000000000100000000000000d3060000
...

or

msf auxiliary(tcp_dcerpc_auditor) > run

192.168.41.221 - UUID 99fcfec4-5260-101b-bbcb-00aa0021347a 0.0 OPEN VIA
135 ACCESS GRANTED 00000000000000000000000000000000000000000000000076070000
192.168.41.221 - UUID afa8bd80-7d8a-11c9-bef4-08002b102989 1.0 OPEN VIA
135 ACCESS GRANTED
000002000c0000000c00000004000200080002000c0002001000020014000200180002001c0002002000020024000200280002002c000200300002000883afe11f5dc91191a408002b14a0fa0300000084650a0b0f9ecf11a3cf00805f68cb1b0100010026b5551d37c1c546ab79638f2a68e86901000000e6730ce6f988cf119af10020af6e72f402000000c4fefc9960521b10bbcb00aa0021347a00000000609ee7b9523dce11aaa100006901293f000002001e242f412ac1ce11abff0020af6e7a17000002003601000000000000c0000000000000460000000072eef3c67eced111b71e00c04fc3111a01000000b84a9f4d1c7dcf11861e0020af6e7c5700000000a001000000000000c000000000000046000000007f0bfe64f59e5345a7db9a19757775540100000000000000

However, I have no idea what to do with this information. Sample #1 seems to be kind of useful, but anyway: How would this information help an attacker to plan his next move? What is metasploit telling me here?

Based on the MSRPC DCE-RPC IFIDs from the first command output you posted, the target appears potentially vulnerable to MS00-070, CVE-2000-0544, CVE-2001-0662, CVE-2002-1561, CVE-2003-0533, CVE-2003-0818, CVE-2004-0894, CVE-2005-1984 (Nessus 19406 and 19407 as well as CANVAS ms05_043 and CORE IMPACT MSRPC SPOOLSS Buffer Overflow), CVE-2005-2119, CVE-2006-0034/1184 (Nessus 21334 and CORE IMPACT MSDTC Allocation), or CVE-2007-1748. You can get cursory information about some of the IFIDs identified by using the epdump tool or deep information about each IFID by going through the Windows network services internals documentation here:

12345778-1234-abcd-ef00-0123456789ac -- References: samr, samr interface, SAM access
2f5f6521-cb55-1059-b446-00df0bce31db -- References: Unimodem LRPC Endpoint
906b0ce0-c70b-1067-b317-00dd010662da -- References: MS-DTC, IXnRemote operations, Distributed Transaction Coordinator
367abb81-9844-35f1-ad32-98f038001003 -- References: SVCCTL RPC, Services Control Manager
12345678-1234-abcd-ef00-0123456789ab -- References: winipsec and spoolss, IPSec services and Spooler service, winipsec operations, winspool operations
50abc2a4-574d-40b3-9d66-ee4fd5fba076 -- References: DnsServer, DnsServer operations
e1af8308-5d1f-11c9-91a4-08002b14a0fa -- References: epmp, RPC endpoint mapper, Portmapper, Portmapper RPC service, epmp operations
0b0a6584-9e0f-11cf-a3cf-00805f68cb1b -- References: localepmp, localepmp operations
99fcfec4-5260-101b-bbcb-00aa0021347a -- References: IObjectExporter, IOXIDResolver, IOIXResolver operations
afa8bd80-7d8a-11c9-bef4-08002b102989 -- This is the RMI, or remote management interface that allows all of this enumeration to occur without authentication. Generally fixed in XP SP2 but the machine you are targeting behaves more like Windows 2000 or Server 2003.

If you want a pretty GUI that enumerates all of the IFIDs and explains what they are, check out this older tool from securityfriday.com called RpcScan. The download link therein didn't work, so after a bit of sleuthing, I was able to find the tool at a disreputable location -- here -- but I was able to verify the GPG signature contained in the zip file by using '--verify' on the .sig file, using '--search-keys' for the resulting keyid, editing the key to add trust, and finally verifying the signature with the associated executable. You may want to run it in a blow-away guest VM just in case.

Additionally, that first IFID shows that the SAMR is running on 192.168.41.221 via TCP port 49179 because of dynamic allocation. This can be queried using a tool such as walksam from the rpctools utilities bundle.

Read more about rpctools here -- https://web.archive.org/web/20070510223113/http://www.bindview.com/Services/RAZOR/Utilities/Windows/rpctools1.0-readme.cfm

And download the zip file here -- https://web.archive.org/web/20070510223113/http://www.bindview.com/Resources/RAZOR/Files/rpctools-1.0.zip

Query the server using the following technique:

C:\> walksam -p ncacn_ip_tcp -e 49179 192.168.41.221

Also run walksam (against all SMB hosts) without the flags to get more general user information as it walks through the SAM database. TrustedSec also released a tool to perform RID cycling, which is one of the techniques performed by walksam. You can check out rid_enum.py in more depth on its GitHub page.

There are plenty of tools that relate to pivot points from the information you gathered via those metasploit-framework auxiliary modules. Some can be found here -- http://winhackingexposed.com/tools.html -- and are discussed in that book's sections on RPC and SMB Enumeration in Chapter 4. I'd also recommend Chris McNab's work as I gathered much of the information for this answer from his wise books.

The best modern equivalent for this MSRPC toolchain is the CoreSec impacket tools. There is an rpcdump.py, but you may get better use out of their ifmap.py and opmap.py tools. These will lead you towards the other tools, such as samrdump.py, lookupsid.py, and potentially even services.py or secretsdump.py. These are all speaking purely from an MSRPC DCE-RPC perspective, there may be many other pathways into this Windows machine or surrounding environment.


Ports Showing Closed/Filtered in Nmap Scans hopefully this isn't a stupid question.. I am running some nmap scans and I get a list of ports that show closed. Why would they even show in the scan report? Can these be exploited further with other nmap switches such as zombie scans etc? I specified all ports in my scan using -p- .My thought is that it would show a large list of all closed ports on my system not just those?

Here is the command I ran: nmap -iL axisips.txt -A -sV -p- > axisnmapresults2.txt

Host is up (0.062s latency).
Not shown: 65525 filtered ports
PORT    STATE  SERVICE      VERSION
17/tcp  closed qotd
19/tcp  closed chargen
25/tcp  closed smtp
111/tcp closed rpcbind
136/tcp closed profile
137/tcp closed netbios-ns
138/tcp closed netbios-dgm
139/tcp closed netbios-ssn
443/tcp open   ssl/http     Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0

To avoid 65K+ lines of mostly-useless output, Nmap collapses most "uninteresting" results into a line that says something like "Not shown: 65530 filtered ports." Open ports are never collapsed this way, but closed (TCP RST) and filtered (no response or ICMP admin-prohibited) ports are only shown if there are fewer than a certain number.

In your case, I would guess that most of the ports are "filtered" but a few are "closed" instead. There are many reasons this might be the case, but the most likely are:

Something between you and the target is blocking access to those ports by spoofing RST replies. This is common with residential ISPs blocking ports 137, 139, and 445, among others.
The target's firewall is allowing those ports, but there is no service running on them.

EDITED TO ADD: Based on the actual port output, I'm pretty sure this is ISP filtering (spoofing closed-port responses). Ports 17 and 19 are commonly used as DDoS amplifiers (though UDP, not TCP). Ports 137-139 and 445 have been exploited on Windows by network worms. Port 25 is for email servers, so ISPs block it unless you buy a business-class connection. I'm not sure about 111 and 136; those could be legitimately closed, or they could be blocked for some other reason. Add the --reason option to your scan to see details about IP Time-to-Live (TTL) in the response; abnormally high TTL values can indicate ISP blocking, especially if the TTL value for open ports is several hops lower (usually between 5 and 15 hops different or so).


How to cryptoanalyze a one time pad that uses a plain text document as the pad? I have read that in order for a one time pad to be truly secure, the pad itself must be random data.  Given the practical difficulty of sharing a secure random pad, I was wondering what would be the problems with using the vast multitude of plain text documents that are currently available from the web.

For instance, if you had some prearranged pattern for selecting a document between Bob and Alice.  Box uses one such document from the web, say a project Gutenberg file, and pads his message (UTF8) with that document and sends the encrypted file to Alice.

What process could Eve use to decrypt the message?

Assume that the pad is longer than the message, and that no other messages between Bob and Alice use the same pad, but other web documents that they mutually agreed upon.

Given the vast number of tracts of text this seems like it could be a practical source for one time pads.  But I have a nagging suspicion that the basic language pattern in the pad could cause an issue.

Well, first of, the number of files in the project Gutenberg, though vast by human standards, is really small for a computer, so it is workable to simply try them all.

Apart from that remark, non-random pad data implies biases. If both the plaintext and the pad are "natural language texts", then the question becomes: given m XOR m', where both m and m' are "text", how can we recover m and m' ? This problem is equivalent to the infamous "two times pad", where a (truly) random pad p was used, but unfortunately twice, with two distinct messages m and m'. In the "two times pad" problem, the attacker knows m XOR p and m' XOR p; by XORing these two values together, the attacker obtains m XOR m' and proceeds from that. In your case, the encrypted text is already m XOR m', so the same attack method applies.

See this and that for details.


Long handshake intolerance (SSL/TLS) - Command Line How can one check Long handshake intolerance on terminal for a remote website?

If anyone knows a openssl command or without use of openssl please suggest!

Please do not suggest use of ssllabs.com.

Long handshake intolerance means that the server cannot handle ClientHello with more than 255 bytes (or in case of F5: more than 255 and less than 513 bytes). You can simulate such handshakes for example with openssl s_client by specifying an as much ciphers as needed as  to reach this size. For example I get

$ openssl s_client -connect google.com:443 -servername google.com -cipher ALL -debug
CONNECTED(00000003)
write to 0xe1b9c0 [0xe1ba40] (354 bytes => 354 (0x162))
...

This means that the initial SSL record (i.e. the ClientHello) had a size of 354 bytes since lots of ciphers are included. This is clearly more than 255 bytes and if you get a successful connection to the server with this then long handshake intolerance is not a problem. If the connection fails it might be due to long handshake intolerance but might also have different reasons. In case of F5 the symptom was that the connection simply hung, i.e. no response from server but also no immediate close of the TCP connection.

Note that the actual size of the ClientHello differs depending on the server name (-servername argument) and the ciphers available in your version of OpenSSL and maybe some added extensions.


Does PCI-required WiFi testing apply to all company facilities? The PCI-DSS requirements define scope in terms of the CDE and systems connected to it. The requirements that specifically deal with physical security (9.x) are phrased in terms of facilities that house CDE systems (and can reasonably be interpreted to extend to facilities that house systems connected by network to the CDE).

However, requirement 11.1, which requires scanning for wireless access points is phrased in absolute terms with no reference to the CDE:

  Implement processes to test for the presence of wireless access points (802.11), and detect and identify all authorized and unauthorized wireless access points on a quarterly basis.

Is it reasonable to assume that such WiFi scans only need to be done at company facilities that have some connection to the CDE? That seems to match the intent of the requirement, though interpreted broadly it could apply to any facility.

I agree with Jonah B but I would make sure that there were no devices within the facility that either have the ability to administer any devices in the CDE (authentiation servers) or have access to those devices (jump boxes).

If the provisions for satisfying Req. 11.1 elsewhere are not going to apply to a facility, then all of the devices within that facility have to be out of scope.

We're looking for rogue APs. When is that ever not a good idea? If I have no data flows there that affect storage, processing, or trasmission, you're good - the devices are out of scope. I'm curious why rogue APs would be tolerated, but you're good.


How does Google Analytics prevent fake data attacks against an entity's traffic? In order to register a "hit" on Google Analytics, the list of things required are:

Unique API key(s) for Google AnalyticsPublic: can be gotten from the embedded JavaScript files on the pages for tracking.
HTTP requests that seem to originate from the page in question. Can be spoofed in a multitude of ways: which means detecting and putting a stop to it is hard enough to be not worth it.
JSON data representing traffic, in a schema that Google expects.

Stop me right here if I’m wrong with the list.

If I’m not, then it’s really easy to spoof traffic on a site and make someone’s Google Analytics look really good even if they’re not getting any traffic!

How, then, does Google prevent these attacks? Doesn’t it hurt the credibility of Analytics stats?

I’m interested in this because of another question I’m still struggling to formulate involving Alice, Bob, Mary and some private keys that somehow need to be safely public. I’m hoping that Google may have solved that problem by trying to address this issue. I’ll post a link here once I have that question up.

Ultimately separating real data from the fake is almost impossible, but in addition to the measures you listed Google employs blacklists. This problem is likely to never go away.

Review this question for more info.
https://stackoverflow.com/questions/2418609/how-does-google-analytics-prevent-traffic-spoofing#2419115


Why is task manager often disabled on managed computers? Many managed(e.g. school, government) computers disable windows task manager. In the case of school computers, the computer often allows arbitrary programs to be run, can allow batch files, and sometimes comes equipped with a language like java.
Does disabling task manager add any security if one can use taskkill or tasklist to list or kill processess?

In order to understand why they are doing this, it is best to go into the manager's shoes.

I would disable everything except for the programs and utilities that the students etc. need, no more, no less.

Fewer people know how to use taskill than those that know how to use taskmanager. Otherwise, it doesn't.


Uses of Threat Modeling outside of application development? Is threat modeling useful outside of application development? Is it a useful tool for doing operational assessments of information systems already in existence?

I am confused how threat modeling methodologies like STRIDE correlate with risk assessment techniques such as defined in NIST 800-30.

Pretty much all if have read about threat modeling is in the context of software development.

Thanks!

Social engineering is something operational security needs to address.  The model still applies, for example, spoofing identities can by done by finding a companies protocols, then impersonating a forgetful, new, or overworked coworker, just "trying to do your job", over the phone etc.


Point of file encryption in PHP? I'm allowing users to upload files to my web server. All of uploaded files are moved outside of the public directory, (later will be moved to AWS).

Currently I encrypt all of the files users upload, and upon retrieval, decrypt them. So, my question is:

What's the point of encrypting files?

I know, this question might seem silly, but really. The only way an attacker can gain access to the non-public directory is if they get access to the web server. Once the attacker does that, he'll have access to all encryption/decryption keys, and all PHP code that is responsible for file security. So, once the attacker is in, file encryption will be just a security theatre.

Is there any way I could make file encryption actually useful? If someone actually gained access to my servers, would it still be possible that files are secure and undecryptable?

Encryption might not be required, but you could make it a bit more useful using public-key crypto.

The receiving machine has the public key, and:
1) Encrypts each file with a unique symmetric key
2) Encrypts the symmetric key with the public key.
3) Stores the two encrypted bits together.

The AWS processing machine has the private key, and can reverse the process.

An attack against the receiving machine can't:
a) Read previously uploaded files
b) Read new files without replacing the code / monitoring the machine in real time.

However an attacker (against the receiving machine), could still: Replace the public key, divert new files into their own store, or whatever they can manage against new files.


How to Protect the Password Stored in a Configuration File? Possible Duplicate:
  Standards for encrypting passwords in configuration files?

I am not sure if this question has been asked before here, I wasn't able to find it. So, please feel free to mark it as duplicate, if it is one.

I have a tool, which uses a Private Key. The path and name of the private key will be read from a configuration file. The Private Key is password protected and the password is also stored in the same configuration file (in Plain Text).

Now, My Questions are as below:
(a) Is it safe to store the private key normally on disk if it is encrypted using a password and stored?
(b) If I "have" to store the password in a config file only, is it possible for me to avoid storing it plain text? (I have thought of the scenario of encrypting the config file itself, but where to store the key used for encrypting it?)
(c) Where can I store the config file in Linux / Windows systems so that the config file can be considered safe and not accessible to normal users?

My apologies if the question(s) sounds too naive.

In reality this is not a problem that cryptography can solve.  There isn't a separation of trust, the application must be able to decrypt the passwords in order to use them.

So how do you protect passwords stored in a configuration file?  Prevent the attacker from reading the configuration file!

Keep the configuration file out of the web root.
Make sure your application doesn't suffer form directory traversal.
Disable file_priv's on your MySQL database.
Make sure that only your application has read access to the file.


How safe is backtrack to use? I've always used backtrack for security assessments, it's a great toolbox. The thing is since it's a toolbox to exploit things, have their been any reports of "bundled" spyware in standard backtrack installs? Have their been reports of backtrack phoning home?

I'm not looking for a debate, just facts.

I have been using Backtrack for 2 years and I have heard no news of any spyware or 'phoning home'.

Also, have you seen the photos of the NSA using Backtrack?

Metasploit and w3af actively work with the curators of Backtrack, which shows some level of confidence in the distribution.

Also, with the number of people running packet sniffers attached to Backtrack as part of their penetration testing, any anomaly would show up immediately.

Because everything in Backtrack is open source, every package added to the distribution is verified before release. You can even check things out yourself.

Does this help?


Path traversal limited I trying to pentest website. I know that there are files named "file1" and "file2". The server is nginx.
So I did this test:

http://example.com/file1..%2ffile2 => 404

http://example.com/file1..%2f..%2ffile2 => 200 and it showed me file2, so it worked!

After this test I assume that the website is vulnerable.
So I did this test:

http://example.com/file1..%2f..%2f..%2f => 400

http://example.com/file1..%2f..%2f..%2fetc/passwd => 400

I tried windows files and linux files...so I did a lot of tests.

As it shows above, I am not able to get files from outside of the web root.
Is this considered vulnerable to path traversal even if I am not able to get any files from outside of the web root?

I am hesitant to comment on whether or not this specific situation is indeed a path traversal. I would need to play with the application to get a better idea.
However, considering your question:

Is this considered vulnerable to path traversal even if I am not able to get any files from outside of the web root?

Considering a true path traversal vulnerability, it is still a vulnerability even if you cannot break the barrier of the web root path. For instance, if you can include a web.config or similar file that resides at the web root but is not accessible directly with a web request, that can result in significant information disclosure.


Other than synchronizer token, is there any way of protection against CSRF using http headers? Recently I came across some websites using HTTP Header namely X-XSRF-Token and a cookie with similar name. Is it a better mitigation than using random token based security for CSRF?

Yes you could use something like the X-Requested-With header - this header cannot be passed cross domain without the server opting into this with the domain in question via CORS.

The synchronizer token pattern is still the recommended method by OWASP - one of the reasons is that there have been vulnerabilities in the past with browser plugins (e.g. Flash) that have allowed headers to be set that normally can't be set in the browser via JavaScript.

So for that reason I would recommend the synchronizer token pattern over checking headers, but at the moment of writing both are equally good. You never know if there's a Flash zero-day around the corner though.


How to get myself into a censored network? I want to test out some censorship evasion techniques and want to get a connect to some censored area, such as China or so. I purchase several VPN that claims to have servers in these countries, but when I dial in, I can still visit the websites that are known to be blocked so I suspect those VPNs are lying about their real location.

I wonder if there is a reliable way that can allow me to get an access to censored countries so I can test out some techniques.

Get somebody who is living there to provide a proxy or VPN to you. Note that this may put him at risk, so be sure to explain the risks to him.
There are already projects that do this, like ONII Probe, which provides an app to test and report blocked sites. Depending on what you are building, they may even have interest in cooperating with you or providing samples.
In addition providing VPN to you may be complicated as well, when the censors suspect that the VPN is providing unlimited access to him instead of limited access to you. But the problem with most commercial VPN is that they sell IPs that are in many geoIP databases labeled for a certain country, but do not always use data centers in this country for routing your traffic. And for data centers may apply other censorship rules than for home connections.


Where to place PHP files for security? A simple question, where do you place PHP files on a server? I can't seem to find any good information on this.

Obviously public files should be in the document root somewhere/somehow, since they need to be accessed, but what about the rest of the files, all the classes etc?

I am attempting to refactor a single page web app with a PHP backend, where most of the files are within the document root, but there are some sensitive files (with passwords etc) above the document root. I was trying to setup autoloading which led me to folder layout. This split layout feels quite messy, is there a better way to do it?

My thought is it should follow the principle of least privilege, if those files don't need to be public then they shouldn't be. Why is this something that is not right at the start of PHP the right way?

I'm using Apache here, it would seem Node is better in that everything is private unless you point your router at it. Is there is a standard way of handling this? If so how to implement it on apache?

Place your public files in a folder called public and point your domain name to this folder using apache virtual host, other non-public files should be in folders above the public folder and you can refer to them by include_path for example. This is how most frameworks are structured.


Spoofed DNS answers ignored by target machine applications Attacker: Arch Linux

Target: Windows 10

Scenario
The attackers launches an ARP spoof attack to redirect all target traffic to the attacker. (This works)

The target sends DNS queries for domain name resolution to the attacker machine. (This works)

The attacker machine listens for this queries and if the query tries to resolve a specific domain (detectportal.firefox.com) sends an spoof DNS answer with the attacker's ip. For all the other domains the queries are not answered and not even forwarded.

Wireshark on both attacker and target machine confirms the reception of the spoofed dns answers although the applications that triggered the dns resolution seems to ignore this answers and just timeout.

Example on target machine:

ipconfig /flushdns
nslookup detectportal.firefox.com
DNS request timed out.
    timeout was 2 seconds.
Server: UnKnown
Address: 10.42.0.1  (my gateway ip and the ip being spoofed by the ARP attack)

DNS request timed out.
    timeout was 2 seconds.

DNS request timed out.
    timeout was 2 seconds.

DNS request timed out.
    timeout was 2 seconds.

DNS request timed out.
    timeout was 2 seconds.
**** Request to UnKnown timed-out

Wireshark confirms the DNS spoof answers are correct and correlates them to the queries.

Assumption:

I do not compute the ip header checksum nor the udp checksum, just put some value (i.e. 0xdead, 0xbeef, 0xcafe). Could it be the target machine dropping these packets AFTER wireshark picks them?

Could it be the target machine dropping these packets AFTER wireshark picks them?

Wireshark gets the packets before they enter the IP stack, i.e. before any checksum gets checked and packets with bad checksum are discarded.


Can a malware power on a computer? I've just downloaded and executed a piece of malware on my computer.

I don't have much time right now, so I just powered it off (turned it off via the Start menu), hoping that it won't be able to steal any data or do malicious activities until I can nuke it from orbit.

Is it enough to prevent the malware to continue to carry out malicious
activities?
Can the malware power on my computer?
Should I also unplug it and remove its battery?

TL;DR Yes, but it's unlikely. Just to be sure, either unplug the PC or ensure it can't connect to anything.
Several operating systems - notably Windows 10 - have the possibility of setting "automatic wakeup", using appropriate drivers and related, complicated hardware management.
As a result, IF (and that's a big if!) a malware program has gained sufficient access to have the operating system do its bidding, it has a way to simply ask the system itself to do this on its behalf.
On some systems (that the malware must be able to recognize and plan for), this holds for "true powerdown" also: additional circuitry will turn the computer on at a preselected time of the onboard Real Time Clock. In a less software-accessible manner this is available on some desktop BIOSes ("Power up automatically: [ ] Never; [ ] After power loss; [ ] Every day at a given time: :" or similar, in the BIOS setup).
Then, the system will automatically power up after some time, for example at a time when you're likely to be asleep.
So:

there is RTC powerup hardware support, or more (integrated management systems, common on enterprise computers)

the malware must already have taken control of the system, since RTC functions usually require administrator/root level access.

RTC powerup HW support not present, or not used:

if the malware has taken control of the system, it can have replaced the shutdown procedure with a mere going into sleep, and set up things to exit sleep mode at a later time.

But did either of these options happen? Probably not. Most malware rely on being run unwittingly and being able to operate without being detected for some time. The "power off simulation" is only useful in very specific scenarios (and the hardware option is only available on comparatively few systems), and I don't think it would be worthwhile for a malware writer to worry themselves with them. They usually go with the third and easiest option:

some of the usual automatic power-up or logon sequences (autoexec, boot scripts, scheduled tasks, run services and so on) is subverted so that additional code, namely, the malware, is silently run.

For a "targeted" malware, designed with some specific victim in mind and tailored to the specific target's capabilities, rather than the subset available on the average infected machine, all the qualifications above wouldn't come into play.


Is there a base version of jQuery which has no XSS vulnerability? I am working on an enterprise project and we have a upcoming new release. The security team runs a security scan, in that vulnerability report there is one point that I am struggling with. The project uses jQuery 1.4.x and it causes a XSS vulnerability, namely this one. I need to upgrade jQuery but the latest version will cause a lot of problems. My question is there least version of jQuery that is striped from the XSS vulnerability?

To get away from the reported issues, (which will show up via projects like retire JS), you'll need to use a JQuery version in the 3.x line. At least one of the commonly referenced issues (this one) required breaking changes and as such was never fixed in the 1.X stream.

The current latest version is 3.2.1 and I'm not aware of it having any disclosed XSS issues.


Choosing encoder for payloads in metasploit I noticed that every payload (for example bind_tcp) in metasploit comes with defaut encoder.( shikata_ga_nai for bind_tcp).

Is there a way in metasploit to manualy choose encoding for payloads or way to cancel encoding at all?

Many thanks!

Yes, you can use it from the command line with msfencode if you're generating shellcode or from within msfconsole using the set and show encoders commands. You can find more details about this here: http://www.offensive-security.com/metasploit-unleashed/Msfconsole_Commands


What security does an ISP provide for its customers? I've heard that ISPs provide some kind of protection; using NAT and firewalls, to prevent hackers from using tools such as nmap to attack customers from over the Internet. What other technologies are being used by ISPs to secure their customers and what are the limitations of this security?

ISP will routinely do the following for their customers:

Block incoming connections on some well-known ports (e.g. port 139, the classic port for Windows file sharing).
Block spam, virus and other malware sent over email.
"Block" some sites by removing the DNS mappings (the customer can still access them, but the ISP DNS server will not resolve the names).
Block outgoing connections to random external sites over port 25 (not all ISP do that, but many do).

Remember that, ultimately, the ISP do not protect customers; an ISP protects itself. The customer is always viewed with a bit of suspicion, and ISP engage resources on the protection of a customer mostly because they want to prevent the customer from becoming an active enemy. For instance, the blocking of outgoing connections to port 25 is a method to prevent a customer's machine from sending spam, in case that machine became part of a botnet: the ISP does not want to appear to be a haven for spammers. On a similar basis, some ISP will automatically detect or even block P2P protocols.

A good ISP will also apply a number of controls on its own infrastructure (firewalls, intrusion detection, redundancy...) in order to maintain its service, which can be viewed, indirectly, as a "protection" for its customers.


Linking to a bank account: login credentials vs. routing information Venmo wants the login credentials to my bank to link to my bank account.  Giving my bank password to another party feels very wrong and is not something I am inclined to do.

However, after thinking about it, I'm not sure that the more traditional approach of giving routing and account numbers is necessarily any better.  At least I can change my bank password. (Although I then wonder: do sites that link to bank accounts in this manner actually store the password?  Or do they obtain some other form of authorization token that survives password changes?)

Is one riskier than the other?

I'm not a financial person and have wondered this as well. So, I think the best way to answer this question is by starting with which services a bank can provide and then what information is required to use those services. I investigated this by actually using the below services. There are two services that I know of to transfer money:

ACH: Your bank will require you to validate the foreign institution transaction before you can send money. There are also daily limits. This is largely the one security barrier between your account being drained by ACH.
Wire: Your bank sends your funds to wherever you tell them to (details below). There are no limits on this transfer and the bank will most likely assume zero responsibility in the event of loss of funds (at least mine did). The institution also does not verify the endpoint like they would with ACH; if you or the financial advisor fat finger the routing number or account number you are potentially at a loss. I asked both institutions before sending a wire transfer what happens if I miss a number and they both advised me not to do that and to triple check the numbers.

Both ACH and Wire require the same numbers to transfer: Routing number and account number (they did in my case, maybe not your institution, again you have to check). Wire transfers almost can never be reversed (I cannot back this up; but it seems like its in every liability). ACH however seems to have that capability. ACH again has limits; one institution I knew of it was $3,000 a day. This makes it next to impossible to drain your account via ACH, and since most ACH can be reversed it makes it less worth while to even try. Its also worth mentioning that ACH are limited to within the USA only. The only way to drain your funds to a foreign institution would be via an international wire transfer which has even more strict policies/regulations than a domestic wire. Also worth mentioning is that you usually need to know the account details of the foreign account to conduct the wire (such as the full name and address of the account holder).

So, with that being said. If you give your password to your bank account whomever it is will have access to your account numbers. This means they could setup an ACH transfer and disable any alerts you have and then setup a recurring ACH transfer that you may never notice. Doing a wire transfer is harder; most if not all banks require you to be physically present to conduct a wire transfer. Some do not; some allow you to fax in forms and your ID... So, let that sink in.

Another perspective for you is if you don't give them any information except your banks routing number and account number. They can then use ACH to request and take funds from your account (think eCheck or reverse Direct Deposit).

With that being said, you should never give your bank password or account numbers out. I find it disturbing that people will give these numbers out willy-nilly for gym membership (yes I'm pointing at you Planet Fitness!).

I should also mention that the routing number for the bank/institution is public information. You can often see it on the front page of the website; this means its one less number sequence for an attacker to find. The number the attacker wants is your bank account number.

You should read over the Security section for wires. Also worth mentioning is that the USA uses SWIFT to conduct wire transfers; this seems to be the target for malware and other types of attacks.


Investigate email address leak source I receive SPAM to my private Gmail email address which have never been publicly available and is not googlable at all.

How could I receive SPAM on it? I saw this question, but in my case BCC is not the point, as in the to: field exactly my address is specified. No randomly-generated list of addresses, but literally single address of mine.

Can I investigate the source of leakage? I.e. from what site/resource the spammer was able to obtain my address?
I do not believe the spammer just randomly generated it.

You can check if one of the websites you login to with your private email was compromised as this has happened to people I know.

https://haveibeenpwned.com/ can be used to check.

It's made by a Microsoft Director as a public service.

For more information see this answer
Is "Have I Been Pwned's" Pwned Passwords List really that useful?

  The original purpose of HIBP was to enable people to discover where
  their email address had been exposed in data breaches. That remains
  the primary use case for the service today and there's almost 5B
  records in there to help people do that.


How safe is PassportJS out of the box? If I have an NodeJS server (an express server) that requires a user to log in before rendering files, how safe is PassportJS to use out-of-the-box?

Currently I am using it with express-session middleware for express and serving everything over HTTPS. User passwords are hashed with bcrypt and the hash is stored in the user database. I am using req.isAuthenticated on all incoming requests to ensure the user is authenticated before serving the secure pages.

Is it advisable to use any other libraries to make this system secure?

Passport.js out of the box is safe as your implementation of it to protect routes from unauthorized access. For example if you forget to apply the middleware to certain routes they would not be protected, if you make a mistake in configuring the authentication strategy you may open up your application to an attack. It is important that you heavily test you code for potential security issues as well as have code review from your co-workers to avoid your own personal bias.


SSL CONNECTIVITY: using self signed certificates Is it possible for ssl connection handshake to happen using self signed certificate with certificate authority

It is possible to get most client applications to accept a self signed cert from a server, however, in many cases it requires that you use a command line option or a setting in a config file.

If the cert is signed by a CA ... then it is not a self signed cert, it is a CA signed cert.  The only real question from there is the CA trusted by the client application.


Is there any way to securely hide data on physical media? In the recent years I've gotten more paranoid of spying and hacking, so I've encrypted most of my important files just in case. Tax information, some company confidential information, account logins, and even my family photos.

While this does ease most of my concerns, the files are still accessible by anyone who comes across the directories or scans the drive for information.

Is there any way to hide the data on a drive, yet have it accessible only to me?

I know that when you "delete" a file, what really happens is the pointer to the file is removed, but the information exists on the drive until it is overridden. Is there any way to do this but not worry about the file being overridden?

Or what about something that not just hides the file, but hides the fact the file is there in the first place? I know that software like Recuva exists that can search your drive for possible files and is able to recover them. Would there be any way to hide the file so that there would be no feasible way to find the hidden files?

I'm ideally looking for something with full plausible deniability. Not something that is hard to get to, but that you wouldn't even be able to find it even if you looked for it. Full drive encryption, TrueCrypt volumes, and unmounted/encrypted partitions can still be found, even if they can't be decrypted.

I believe requiring full plausible deniability leaves only Steganography:

Hide in images (approach of Freedo)
Hidden TrueCrypt partition (this is basically Steganography as well, on a (visible) partition instead of an image)

However there is one big problem with these approaches, the software to read (and most often also write) the data must not be found.
If you want everything on local disk (or other local media like CD's) this is actually a big problem as the presence of such application will raise suspicion and might very likely destroy your plausible deniability.

The solution I see for this is to download the application every time you need it but then you need a way to leave as few trails as possible. Systems like the Tor network should provide a solution here, the presence of Tor should in my opinion not undermine the plausible deniability.

And be sure to be very thorough in removing the application after using it as a lot of applications leave traces behind after removal.


Multiple TLS / SSL sessions originated between 2 Windows Servers (2012R2) sharing the same symmetric session keys - is this possible? I'm testing a scenario where 2 applications residing on 2 separate windows 2012r2 servers are opening N concurrent TLS1.2 mutual authentication sessions (using different certificates for the client authentication part) to the same server.

Due to the fact that all sessions are going through the same Schannel modules at client side as well at server side, I was wondering if it might be possible that the N sessions (or a subset) might be ending up sharing / using the same cryptographic material (i.e symmetric session keys) in a CPU processing optimization solution at server / client side.

Should this be the case, what would be the best way to verify this ?

I've tried to check in the RFC but I'm not 100% sure what is the expected protocol behavior under these specific circumstances.

Hope the description makes sense.

Thanks,

If they use a different client cert they can't share an SSL/TLS session, because the peer cert (and its status) is part of the security context.

Even if they can/could share a session and thus use the same master secret, the actual keys (plural) (and IVs if applicable) used on each connection are different because the per-connection nonces are used in the KDF, see F.1.4 in rfc5246 (same as 4346 and 2246).