How would one extract a non-exportable private key in Mac OS X 10.12.4?
Plenty of tools for this, I'll leave this here: https://github.com/n0fate/chainbreaker but Elcomsoft and other folks sell pretty versions ostensibly for law enforcement purposes.
The non-exportable flag for most keychains is typically a simple UI limitation not an actual security feature. Which means it needs to be stored/extracted into memory at some point. This is one behavior we can take advantage of.
It's a known limitation of most implementations of keychains/certstores etc. This is changing as operating systems begin to take advantage of TPMs for hardware backing of keychains. (For example, you cannot do this on ChromeOS: https://www.chromium.org/developers/design-documents/tpm-usage)